加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

使用SQLServer Audit来监控触发器的启用、禁用情况

发布时间:2020-12-12 14:15:38 所属栏目:MsSql教程 来源:网络整理
导读:?使用情景:?????? ???????有时候会发现在触发器中的业务逻辑没有执行,可能是因为触发器的逻辑错误所引起的。但是有时候却是因为一些触发器被禁用了。 ? ?????? 由于 SQLServer 默认不跟踪触发器的启用还是禁用。且禁用触发器的命令( Disable Trigger )不

?使用情景:??????

???????有时候会发现在触发器中的业务逻辑没有执行,可能是因为触发器的逻辑错误所引起的。但是有时候却是因为一些触发器被禁用了。

?

?????? 由于SQLServer默认不跟踪触发器的启用还是禁用。且禁用触发器的命令(Disable Trigger)不在默认跟踪里面捕获。但是可以在服务器级别的跟踪(不是使用Profiler)获取这些信息,捕获SQL:StmtCompleted并在TextData列筛选,但是对于负载较重的系统,这样会有比较大的影响。

?

?????? 如果你的是企业版,可以考虑使用一个新特性:SQL Server Audit。可以使用DATABASE AUDIT SPECIFICATION来捕获这些事件。

?

使用步骤:

?

第一步,使用以下语句先创建服务器级别监控:

?

USE master;

GO

CREATE SERVER AUDIT ServerAudit

  TO FILE (FILEPATH = 'E:temp',MAXSIZE = 1 GB)--注意更改文件路径

  WITH (ON_FAILURE = CONTINUE);

GO

ALTER SERVER AUDIT ServerAudit

  WITH (STATE = ON);

注意,路径需要修改,temp文件夹也要实现开启。

第二步,创建数据库级别监控:

?

?对于本文,我们关注SCHEMA_OBJECT_CHANGE_GROUP,以AdventureWorks为例子:

USE AdventureWorks;
GO
CREATE DATABASE AUDIT SPECIFICATION schema_change
FOR SERVER AUDIT ServerAudit
ADD (SCHEMA_OBJECT_CHANGE_GROUP)
WITH (STATE = ON);
GO


?

?

第三步,创建一个示例表,然后创建一个示例触发器:

?

CREATE TABLE dbo.splunge ( id INT ) ;
GO
CREATE TRIGGER dbo.splunge_trigger ON dbo.splunge
    FOR INSERT
AS
    BEGIN
        SELECT  1 ;
    END
GO


?

?

第四步,可以使用以下脚本来检查:

?

SELECT  event_time,succeeded,server_principal_name,[object_name],[statement]
FROM    sys.fn_get_audit_file('E:TempServerAudit*',NULL,NULL)
WHERE   database_name = 'AdventureWorks' ;


?

结果如下,可以看到捕获了创建的记录:

?

?

现在来禁用这个触发器,然后再查询一下:

?

DISABLE TRIGGER dbo.splunge_trigger ON dbo.splunge;
GO
SELECT  event_time,NULL)
WHERE   database_name = 'AdventureWorks' ;

结果如下:

?


如果你重新启用这个触发器,你会再看到另外一行,如果觉得返回数据太多,可以在where语句中添加筛选:

AND [statement] LIKE '%disable%trigger%'

?

???? 但是有时候会存在误报,比如,在你的代码里面可能存在同样的信息。但是筛选数据对性能和检查问题总是有好处的。

?

小结:

??????? 捕获事件有很多种方式。此功能仅限2008企业版使用。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读