了解事件通知与 SQL 跟踪
下表对使用事件通知和 SQL 跟踪监视服务器事件进行比较和对照。
SQL 跟踪 |
事件通知 |
---|---|
SQL 跟踪不会对与事务关联的性能造成负面影响。打包数据很有效。 |
创建 XML 格式的事件数据和发送事件通知会对性能造成关联的负面影响。 |
SQL 跟踪可以监视任何跟踪事件类。 |
事件通知可以监视部分跟踪事件类和所有数据定义语言 (DDL) 事件。 |
您可以自定义在跟踪事件中生成哪些数据列。 |
由事件通知返回的 XML 格式的事件数据架构是固定的。 |
无论是否回滚 DDL 语句,都将始终生成 DDL 生成的跟踪事件。 |
如果回滚相应 DDL 语句中的事件,则事件通知不会触发。 |
管理跟踪事件数据的中间流涉及填充和管理跟踪文件或跟踪表。 |
事件通知数据的中间管理将通过 Service Broker 队列自动执行。 |
每次重新启动服务器时,都必须重新启动跟踪。 |
注册之后,事件通知将保持在服务器循环中,并进行事务处理。 |
启动之后,无法控制触发跟踪。停止时间和筛选时间可用于指定何时启动。可以通过轮询相应的跟踪文件访问跟踪。 |
通过对接收事件通知生成的消息的队列使用 WAITFOR 语句可以控制事件通知。可以通过轮询队列访问它们。 |
ALTER TRACE 是创建跟踪所需的最低权限。在相应计算机上创建跟踪文件也需要该权限。 |
最低权限取决于要创建的事件通知的类型。有关详细信息,请参阅CREATE EVENT NOTIFICATION (Transact-SQL)。相应队列还需要 RECEIVE 权限。 |
可以远程接收跟踪。 |
可以远程接收事件通知。 |
可以使用系统存储过程实现跟踪事件。 |
通过组合使用数据库引擎和 Service BrokerTransact-SQL 语句实现事件通知。 |
通过查询相应的跟踪表、分析跟踪文件或使用 SQL Server 管理对象 (SMO) TraceReader 类能够以编程方式访问跟踪事件数据。 |
可以通过对 XML 格式的事件数据执行 XQuery 或使用 SMO 事件类,以编程方式访问事件数据。 |