首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DDL触发器不一定会触发,为什么?

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

Stack Overflow用户
提问于 2012-04-13 04:26:44
回答 1查看 114关注 0票数 0

我得到了这个示例代码。它在所有T-SQL代码中都工作得很好,但是如果我通过鼠标单击在SSMS中删除一个表,事件就不会被跟踪-问题是为什么?

代码语言:javascript
运行
复制
-- 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-13 06:47:27

我已经检查了SQL Server2005和SQL Server2008,给出了日志表和提供的DDL触发器,无论我如何将其放入SSMS,它都正确地记录了丢弃。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10131280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档