SQL Server 2005的XML支持与异常处理
2007-05-15 09:27:37 来源:WEB开发网核心提示: 请注意,这段代码中的 DDL 触发器定义为,SQL Server 2005的XML支持与异常处理(8),在当前数据库上创建或更改存储过程时激发,当触发器激发后,应该将 DDL 触发器定义为仅执行所需的操作并快速完成,如果需要异步执行,事件的数据会被捕获并存储在本地 XML 变量中,尽管这不
请注意,这段代码中的 DDL 触发器定义为,在当前数据库上创建或更改存储过程时激发。当触发器激发后,事件的数据会被捕获并存储在本地 XML 变量中。尽管这不是必要的,但如果您打算多次访问 eventdata 函数,这有助于使触发器更高效。然后,触发器会检查对象的名称是否以 pr 开头。如果是,则允许事务完成;如果不是,则回滚事务,并且存储过程将保持不变。在本例中,我知道 ObjectName 元素将包含存储过程的名称,因为仅在创建或更改存储过程时才会调用触发器。
<EVENT_INSTANCE>
<EventType>CREATE_PROCEDURE</EventType>
<PostTime>2005-10-20T00:52:16.160</PostTime>
<SPID>51</SPID>
<ServerName>MYDBSERVER</ServerName>
<LoginName>CAMELOTjpapa</LoginName>
<UserName>dbo</UserName>
<DatabaseName>AdventureWorks</DatabaseName>
<SchemaName>dbo</SchemaName>
<ObjectName>test1</ObjectName>
<ObjectType>PROCEDURE</ObjectType>
<TSQLCommand>
<SetOptions ANSI_NULLS="ON" ANSI_NULL_DEFAULT="ON" ANSI_PADDING="ON"
QUOTED_IDENTIFIER="ON" ENCRYPTED="FALSE" />
<CommandText>create proc test1 as select getdate()</CommandText>
</TSQLCommand>
</EVENT_INSTANCE>
显示执行以下命令后该触发器的事件数据:
create proc test1 as select getdate
您还可以捕获事件数据,并将其完整存储到审核表的 XML 列中。另一个选择是抽出特定节点的内容,并将其单独存储。显然,实现视具体情况而定,但 DDL 触发器为您提供的选择有很多。使用 DDL 触发器时需要记住的一件事是,它们是同步操作的。由于是同步执行,触发器应该尽可能不执行费时的操作。否则,它们会对数据库服务器的性能造成负面影响。与 DML 触发器一样,应该将 DDL 触发器定义为仅执行所需的操作并快速完成。如果需要异步执行,可以使用 Service Broker 和 Event Notification 模型。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接