Используйте триггер AFTER DELETE
для таблицы, чтобы регистрировать удаления в другой таблице вместе с пользователем и временем, когда она была выполнена.
Используя некоторые продвинутые приемы, вы можете извлечь текст запроса, который удалил строки, но я не уверен, что это возможно внутри триггера.
Триггер может выглядеть следующим образом
CREATE TABLE YourLogTable
(
ID int identity primary key,
Date datetime NOT NULL DEFAULT GETDATE(),
[User] nvarchar(128) NOT NULL DEFAULT suser_sname(),
[SqlText] NVARCHAR(MAX),
[any other interesting columns from deleted rows]
)
GO
CREATE TRIGGER [TR.AD@YourTable]
ON YourTable
AFTER DELETE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sqlText NVARCHAR(MAX)
SELECT @sqlText = txt.Text
FROM sys.dm_exec_connections c
CROSS APPLY sys.dm_exec_sql_text(c.most_recent_sql_handle) txt
WHERE session_id = @@SPID
INSERT YourLogTable([SqlText], [any other interesting columns from deleted rows])
SELECT @SqlText, [any other interesting columns from deleted rows]
FROM DELETED
END