Медленно и печально, но совершенно незаметно для окружающих, если есть индекс по RecId
X++:
SELECT TOP 1 *
FROM SysDatabaseLog (NOLOCK)
WHERE CreatedDate < DATEADD(m, -1, GETDATE());
GO
WHILE @@ROWCOUNT > 0
BEGIN
DELETE FROM SysDatabaseLog
WHERE RecId IN (SELECT TOP 1000 RecId
FROM SysDatabaseLog (NOLOCK)
WHERE CreatedDate < DATEADD(m, -1, GETDATE()) );
END
GO