扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:microsoft.com 来源:microsoft.com 2007年9月1日
关键字: XML SQL Server SQL Server 2005 数据库
TRY/CATCH 结构捕获严重度为 11 到 19(包括 11 和 19)的错误。低于 11 的严重级别是警告,不视为错误。严重级别为 20 及以上的错误视为严重错误。然而,如果这些严重级别为 20 及以上的错误没有导致数据库引擎停止,则它们将由 TRY/CATCH 捕获。总之,TRY/CATCH 语句更易于读取、更易于维护,且更不容易导致复制和粘贴错误。此外,@@ERROR 技术也不总是很可靠。例如,某些错误会中止计划或整个批处理。
问:我知道可以创建触发器来审核对数据的更改,但是如果表的架构发生更改,我如何执行操作呢?
答:我在简介中提到过,现在有了一个新的触发器:SQL Server 2005 中的 DDL 触发器。数据操作语言 (DML) 触发器基于数据操作激发,而 DDL 触发器在对数据库架构或服务器进行更改时激发。创建的 DDL 触发器只能在发生触发事件之后激发,而 DML 触发器则不同,它可以在事件之后或代替事件激发。以下是创建 DDL 触发器的语法,在 SQL Server 2005 文档中进行了概述:
|
请注意,您可以创建触发器,以便它在对数据库的架构或数据库服务器进行更改时激发。您还可以通过指定事件类型(这些类型都列在 SQL Server 2005 文档中)来定义导致触发器激发的事件。或者,也可以通过指定 DDL_DATABASE_LEVEL_EVENTS 标识符让 DDL 触发器在所有事件之后激发。
通过 DDL 触发器,您可以记录对数据库的架构所作的更改。可以使用 DDL 触发器审核更改,而不是防止更改。或者,也可以通过 DDL 触发器记录尝试操作,然后将其回滚。您可能还希望在创建对象时对其强制命名约定。例如,您可能希望所有存储过程都以 pr 为前缀。通过 DDL 触发器,您可以强制该命名约定。
DDL 触发器与 DML 触发器的类似之处在于,它们都可以回滚事务。然而,DDL 触发器没有插入或删除的表。DDL 触发器能够访问一个名为 eventdata 的内置函数,该函数在 XML 数据类型中返回 XML(包含有关激发触发器的事件的信息)。每个事件在事件数据中显示的信息都略有不同。但是,eventdata 函数始终为所有事件返回以下信息:
• 事件的时间
• 事件的类型
• 导致触发器激发的连接 SPID
• 发生事件的用户上下文的登录名和用户名
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者