DDL触发器肯定不会触发,为什么?

时间:2012-04-12 20:26:44

标签: sql-server-2008

我有这个示例代码。它适用于所有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

1 个答案:

答案 0 :(得分:1)

我已经检查了SQL Server 2005和SQL Server 2008,在给定日志记录表和提供的DDL触发器的情况下,它已正确记录了丢弃,无论我如何将其丢弃在SSMS中。

您能否提供正在使用的确切菜单/上下文菜单命令,并仔细检查您是不是将表丢弃在1个数据库中,并在另一个数据库中读取日志表(就像您在主服务器中意外创建了一个重复的日志表)

相关问题