0

我得到了这个示例代码。它适用于所有 T-SQL 代码,但如果我通过鼠标单击将表放在 SSMS 中,则不会跟踪事件 - 问题是为什么?

-- create the table to store the events
CREATE TABLE dbo.CREATE_TABLE_LOG (
eventTime datetime
, eventOwner nvarchar(100)
, eventTSQL nvarchar(3000)
)
GO
-- create the DDL trigger
CREATE TRIGGER DDLTrigger_CreateTable ON DATABASE FOR create_table, alter_table, drop_table
AS
DECLARE @data XML
SET @data = EVENTDATA()
INSERT INTO CREATE_TABLE_LOG
VALUES (
GETDATE()
, CURRENT_USER
, @data.value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]',
'nvarchar(1000)')
)
GO
4

1 回答 1

1

我已经检查了 SQL Server 2005 和 SQL Server 2008,鉴于提供的日志记录表和 DDL 触发器,它已正确记录了删除,无论我如何在 SSMS 中删除它。

您能否提供您正在使用的确切菜单/上下文菜单命令,并仔细检查您没有删除 1 个数据库中的表,并读取另一个数据库中的日志表(就像您不小心在 master 中创建了一个重复的日志表)。

于 2012-04-12T22:47:26.987 回答