SQL Server Audit监控触发器状态

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: 原文:SQL Server Audit监控触发器状态一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 注意事项(Attention) 疑问(Questions) 参考文献(References) 二.
原文: SQL Server Audit监控触发器状态

一.本文所涉及的内容(Contents)

  1. 本文所涉及的内容(Contents)
  2. 背景(Contexts)
  3. 实现代码(SQL Codes)
  4. 注意事项(Attention)
  5. 疑问(Questions)
  6. 参考文献(References)

二.背景(Contexts)

  DML触发器一般会运用在业务系统的逻辑处理上,在你对数据库用户权限控制不当的时候,这些DML触发器很可能莫名的被禁用或者删除了,你作为数据库管理员你想做冤大头嘛?背黑锅嘛?如果不想,下面给出4种解决方案:

1. 使用DDL触发器对服务级别或者数据库级别进行监控,可以参考文档:SQL Server DDL触发器运用,效果如下图所示:

wps_clip_image-18803

(Figure1:触发器的日志)

2. 也可以使用数据库DDL事件通知,可以参考文档:SQL Server 事件通知(Event notifications),效果如上图所示;

3. 第三种方案就是变更数据捕获(CDC),可以参考文档:SQL Server 变更数据捕获(CDC)监控表数据

4. 第四种方案就是这篇文章要讲到的新特性:SQL Server Audit,可以使用DATABASE AUDIT SPECIFICATION来捕获这些事件。

三.实现代码(SQL Codes)

(一) 创建服务器级别的审核,注意设置FILEPATH为对应的路径,显示设置审核状态,创建审核的时候只能是服务器的;

USE master
GO
--创建服务器级别审核
CREATE SERVER AUDIT ServerAudit
TO FILE (FILEPATH = 'F:\AuditLog\', MAXSIZE = 256 MB)
WITH (ON_FAILURE = CONTINUE);
GO
--开启审核
ALTER SERVER AUDIT ServerAudit
WITH (STATE = ON);

 

(二) 创建服务器级别的审核规范,这里指定相对应的AUDIT(审核)接收、保存跟踪和记录的数据,可以同时多个审核规范指向同一个审核。

SCHEMA_OBJECT_CHANGE_GROUP,针对架构执行 CREATE、ALTER 或 DROP 操作时将引发此事件。任何数据库的任何架构发生更改时,均将引发此事件。审核操作组的其它值可以参考:SQL Server 审核操作组和操作

--创建服务器级别审核规范
USE master
GO
CREATE SERVER AUDIT SPECIFICATION Schema_Change
FOR SERVER AUDIT ServerAudit
ADD (SCHEMA_OBJECT_CHANGE_GROUP)
WITH (STATE = ON);
GO

 

(三) 手动产生对象更改事件

--测试
CREATE TABLE dbo.TestAudit(Id INT)
GO
CREATE TRIGGER dbo.TestAudit_Trigger ON dbo.TestAudit
    FOR INSERT
AS
    BEGIN
        SELECT * FROM dbo.TestAudit;
    END
GO

 

(四) 查询Audit的记录,这里针对审核ServerAudit的内容进行查询:

--查询
SELECT  database_name,
        event_time,
        succeeded,
        server_principal_name,
        [object_name],
        [statement]
FROM sys.fn_get_audit_file('F:\AuditLog\ServerAudit_*.sqlaudit', default, default)

wps_clip_image-31207

(Figure2:操作记录)

四.注意事项(Attention)

1. 审核必须已存在,才能为它创建服务器审核规范。 服务器审核规范在创建之后处于禁用状态。

2. CREATE SERVER AUDIT 语句位于事务范围内。 如果对事务进行回滚,也将对该语句进行回滚。

3. 经过审核的事件可以写入事件日志或审核文件。

4. 定义审核时,将指定结果的输出位置。 这是审核的目标位置。 审核是在禁用状态下创建的,因此不会自动审核任何操作。 启用审核后,审核目标将从审核接收数据,目标可以是文件、Windows 安全事件日志或 Windows 应用程序事件日志。

5. 通过使用 Windows“事件查看器”、“日志文件查看器”或 fn_get_audit_file 函数来读取审核事件。

6. 如果在启动审核期间出现问题,则服务器将不会启动。 在这种情况下,可以在命令行中使用 –f 选项来启动服务器。

五.疑问(Questions)

1. 如何对*.sqlaudit这些日志进行归档或者删除内容呢?

2. 使用sys.fn_get_audit_file获取到的event_time跟当前的时间不对应,什么问题?

3. 使用sys.fn_get_audit_file为什么获取到的记录有空的呢?如果说database_name为空到是还好解释,因为有些操作可能是服务器级别的,这个字段为空到是说的过去,但是[object_name]和[statement]为什么没有内容呢?

wps_clip_image-9127

(Figure3:空值)

4. 如果我创建表失败了,为什么返回的记录中还是显示成功的呢?,执行下面的SQL时返回了下面的错误信息,但是记录的succeeded字段显示为1。

--测试 CREATE TABLE dbo.TestAudit(Id INT ) ; GO

消息2714,级别16,状态6,第2 行

数据库中已存在名为'TestAudit' 的对象。

wps_clip_image-19201

(Figure4:创建表失败)

5. Audit与C2是什么关系呢?

6. C2禁用的时候不能马上生效,需要重启数据库服务,这是为什么呢?

7. 如何修改C2日志文件的路径?

解答:要想修改C2日志文件的路径,那就先要知道这个默认的路径在哪里?在数据库属性中设置数据库的默认位置,开启C2开关,就能把类似audittrace20130710105730.trc的文件保存到下图设置的路径当中。

wps_clip_image-9557

(Figure5:重设C2记录文件的保存路径)

8. 为什么修改了路径之后的显示是这样的?Path Field Limits

wps_clip_image-10913

(Figure6:路径)

六.参考文献(References)

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

创建服务器审核和服务器审核规范

SQL Server 审核(数据库引擎)

SQL Server 审核操作组和操作

CREATE SERVER AUDIT (Transact-SQL)

SQL 跟踪

SQL Server Audit (Database Engine)

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
22天前
|
SQL 数据采集 监控
局域网监控电脑屏幕软件:PL/SQL 实现的数据库关联监控
在当今网络环境中,基于PL/SQL的局域网监控系统对于企业和机构的信息安全至关重要。该系统包括屏幕数据采集、数据处理与分析、数据库关联与存储三个核心模块,能够提供全面而准确的监控信息,帮助管理者有效监督局域网内的电脑使用情况。
16 2
|
12天前
|
SQL 监控 安全
员工上网行为监控软件:SQL 在数据查询监控中的应用解析
在数字化办公环境中,员工上网行为监控软件对企业网络安全和管理至关重要。通过 SQL 查询和分析数据库中的数据,企业可以精准了解员工的上网行为,包括基础查询、复杂条件查询、数据统计与分析等,从而提高网络管理和安全防护的效率。
25 0
|
3月前
|
SQL 监控 Java
SQL质量监控
为帮助用户管理和优化SLS中的SQL查询,提供了用户级SQL质量监控功能,集成于CloudLens for SLS。开启服务后约10分钟,用户可在「报表中心 / SQL质量监控」中查看数据。 该功能包括: SQL健康分和使用报告:反馈总体质量。 服务指标:如请求PV数、平均延时等,用于业务分析。 运行指标:如并发请求、处理数据量等。 SQL Pattern分析:提炼SQL语义特征,识别业务特征。 质量优化建议:基于请求成功率和错误码分布给出改进建议。 监控功能以分钟为单位聚合分析数据,不包括JDBC接入和ScheduledSQL流量,并可能随产品发展而调整。这些功能有助于用户全面掌握SQL
SQL质量监控
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
WXM
|
4月前
|
SQL 运维 分布式计算
如何做好SQL质量监控
为满足用户对SQL分析行为的监控和质量管理需求,我们推出了用户级SQL质量监控功能。此功能集成于CloudLens for SLS中,可轻松开启以监控和管理所有SLS相关资源(包括采集接入、读写操作、作业、配额、SQL、计费等)。
WXM
34 2
如何做好SQL质量监控
|
3月前
|
SQL 存储 数据管理
深入理解SQL中的触发器
【8月更文挑战第31天】
44 0
|
4月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
115 13
|
4月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
4月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
61 6
|
4月前
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
386 1

热门文章

最新文章

下一篇
无影云桌面