您好我有一个数据库,我们经常需要删除记录,但是因为这有时可能会被错误地完成我想知道有没有办法保存完成的SQL命令的历史记录,并输出到它们的屏幕日志?感谢
答案 0 :(得分:0)
试试这个:
USE YourDatabase;
GO
CREATE TABLE ddl_log (PostTime datetime, DB_User nvarchar(100), Event nvarchar(100), TSQL nvarchar(2000));
GO
CREATE TRIGGER log
ON DATABASE
FOR DDL_DATABASE_LEVEL_EVENTS
AS
DECLARE @data XML
SET @data = EVENTDATA()
INSERT ddl_log
(PostTime, DB_User, Event, TSQL)
VALUES
(GETDATE(),
CONVERT(nvarchar(100), CURRENT_USER),
@data.value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(100)'),
@data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'nvarchar(2000)') ) ;
GO
--Test the trigger
CREATE TABLE TestTable (a int)
DROP TABLE TestTable ;
GO
SELECT * FROM ddl_log ;
GO
答案 1 :(得分:0)
我看到你正在使用Sql Server。 您可以按照某人的建议编写触发器,也可以配置Change Data Capture。 CDC将有更好的表现。