← Все статьи

McAfee ePO: как очистить базу SQL от лишних событий

Автор: Юрий Нефёдов, системный инженер · 21.04.2021 · обновлено 24.10.2026

Со временем база McAfee ePolicy Orchestrator (ePO) может разрастись из-за миллионов однотипных событий, которые присылают клиенты. Ниже способ найти «мусорный» тип событий и удалить его без долгой блокировки базы.

Перед началом сделайте резервную копию базы.

Найти события, которые занимают больше всего места

Запрос выводит десять типов событий с наибольшим числом записей. Запомните EventID из первой строки:

select top 10
Count(e.ThreatEventID) as [Count], e.ThreatEventID as EventID,
f.[Description] as 'Event Description', e.AnalyzerName as 'Event Source'
from EPOEvents e (nolock) left join EPOEventFilterDesc (nolock) f
on e.ThreatEventID = f.EventId where f.[Language] = '0409'
group by e.ThreatEventID, f.[Description], e.AnalyzerName
order by [Count] desc

Удалить события порциями

Подставьте свой EventID в первую строку вместо 1092. Скрипт удаляет записи порциями по 10 000 с паузой 5 секунд, чтобы не блокировать базу надолго, и заодно чистит связанную таблицу, если она есть в вашей версии ePO:

declare @EventID int = 1092;
declare @Is510 bit; declare @rowcount int = 1;
if OBJECT_ID('tempdb.dbo.#PurgeEvents', 'U') IS NOT NULL drop table #PurgeEvents;
create table #PurgeEvents (AutoID bigint);
if exists (select 1 from sys.objects where [name] = 'EPOEventsMT' and type = 'SN')
set @Is510 = 1; else set @Is510 = 0;
while (@rowcount > 0)
begin
begin transaction;
delete top(10000) EPOEvents output deleted.AutoID into #PurgeEvents where ThreatEventID = @EventID;
if (@Is510 = 1) delete A from EPOEventsReference A join #PurgeEvents B ON A.AutoID = B.AutoID;
set @rowcount = @@ROWCOUNT;
truncate table #PurgeEvents;
commit transaction;
if @rowcount > 0 waitfor delay '00:00:05';
end
drop table #PurgeEvents;

Сжать базу

После удаления файл базы не уменьшается сам. Освободить место на диске можно сжатием (Shrink) через SQL Server Management Studio или командой ниже. Сжатие увеличивает фрагментацию индексов, поэтому делайте его только после крупной очистки:

DBCC SHRINKDATABASE (N'ePO_DatabaseName');

Чтобы база не разрасталась снова, настройте в ePO регулярную серверную задачу очистки журнала событий угроз.

Нужна помощь с настройкой?

Если задача сложнее, чем в статье, напишите мне. Первая консультация бесплатная.