您的位置:首页 > 数据库

SQL Server 2005------事件触发器

2009-07-01 11:53 183 查看
基于数据对象创建,删除,登录等事件的触发器称为事件触发器。

范例:
CREATE TRIGGER [ddlDatabaseTriggerLog] ON DATABASE
FOR DDL_DATABASE_LEVEL_EVENTS AS
DECLARE @data XML;
DECLARE @schema sysname;
SET @data = EVENTDATA(); //获取Xml格式的事件信息
SET @schema = @data.value('(/EVENT_INSTANCE/SchemaName)[1]', 'sysname');
//也可以在@data上使用XQuery的query()方法获取节点信息,节点Layout如下
/* <EVENT_INSTANCE>
<EventType>type</EventType>
<PostTime>date-time</PostTime>
<SPID>spid</SPID>
<ServerName>name</ServerName>
<LoginName>name</LoginName>
<UserName>name</UserName>
<DatabaseName>name</DatabaseName>
<SchemaName>name</SchemaName>
<ObjectName>name</ObjectName>
<ObjectType>type</ObjectType>
<TSQLCommand>command</TSQLCommand>
</EVENT_INSTANCE>
*/
执行 DDL 式操作的系统存储过程也可以激发 DDL 触发器。测试您的 DDL 触发器以确定它们是否响应运行的系统存储过程。
例如,CREATE TYPE 语句和 sp_addtype 存储过程都将激发针对 CREATE_TYPE 事件创建的 DDL 触发器。但是,sp_rename 存储过程不会激发任何 DDL 触发器。

激发 DDL 触发器的事件组:http://msdn.microsoft.com/zh-cn/library/ms191441(SQL.90).aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: