使用SQL Server Audit记录数据库变更

简介:
最近工作中有一个需求就是某一个比较重要的业务表经常被莫名其妙的变更。在SQL Server中这类工作如果不事前捕获记录的话无法做到。对于捕获变更来说可以考虑的选择包括TraceCDC。但Trace的成本比较大对于负载量较高的系统并不合适而CDC需要影响业务库因此SQL Server Audit就是一个比较好的选择。

    在SQL Server中如果只是希望获得表的更新时间只需要看表的聚集索引的最后更新时间即可代码如下

SELECT OBJECT_NAME(OBJECT_ID) AS DatabaseName, last_user_update,* 
FROM sys.dm_db_index_usage_stats 
WHERE database_id = DB_ID( 'DateBaseName') 
AND OBJECT_ID=OBJECT_ID('TableName')

 

    但这种方式并不能看到由某人在某个时间修改了某个表在此使用Server Audit。Server Audit底层采用的是扩展事件且存储结构可以以单独文件独立于用户库因此不仅性能较好也不会对用户库产生影响。

    下面是启用审核的T-SQL代码

USE master 
CREATE SERVER AUDIT audit1 TO FILE (FILEPATH='D:\SQLAudit') 
USE AdventureWorks2012 
CREATE DATABASE AUDIT SPECIFICATION SerialPic FOR SERVER AUDIT audit1 
ADD(UPDATE,INSERT,DELETE ON Person.Address by dbo)

 

USE master 
CREATE SERVER AUDIT audit1 TO FILE (FILEPATH='D:\SQLAudit') 
USE AdventureWorks2012 
CREATE DATABASE AUDIT SPECIFICATION SerialPic FOR SERVER AUDIT audit1 
ADD(UPDATE,INSERT,DELETE ON Person.Address by dbo)

 

   上述代码首先创建服务器级别的审核并存入D\SQLAudit中然后对应创建数据库级别的审核。在数据库级别的审核中跟踪Person.Address表的UpdateInsertDelete操作。

 

    接下来尝试修改数据库Person.Address在安全-审核下查看审核日志如图1所示。

image

图1.查看审核日志

 

    结果如图2所示。

image

图2.数据库审核记录

 

    这样就可以看到谁在什么时间曾经对该表做过哪些修改。当然除了UI方式也可以通过T-SQL方式查看审核记录。

SELECT * FROM 
fn_get_audit_file('D:\SQLAudit\audit1_B8A7821A-D735-446D-B6FA-DF582AB80375_0_130648999540780000.sqlaudit', default, default)

分类: SQL Server安全


本文转自CareySon博客园博客原文链接http://www.cnblogs.com/CareySon/p/4204027.html如需转载请自行联系原作者
相关文章
|
9月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1432 152
|
9月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
1046 156
|
9月前
|
SQL 人工智能 Linux
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
718 5
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
|
8月前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
408 6
|
9月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
9月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
599 8
|
10月前
|
SQL 人工智能 Java
用 LangChain4j+Ollama 打造 Text-to-SQL AI Agent,数据库想问就问
本文介绍了如何利用AI技术简化SQL查询操作,让不懂技术的用户也能轻松从数据库中获取信息。通过本地部署PostgreSQL数据库和Ollama模型,结合Java代码,实现将自然语言问题自动转换为SQL查询,并将结果以易懂的方式呈现。整个流程简单直观,适合初学者动手实践,同时也展示了AI在数据查询中的潜力与局限。
1284 8
|
10月前
|
SQL 人工智能 Linux
SQL Server 2025 RC0 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC0 发布 - 从本地到云端的 AI 就绪企业数据库
425 5
|
SQL 数据库 数据安全/隐私保护
数据库数据恢复——sql server数据库被加密的数据恢复案例
SQL server数据库数据故障: SQL server数据库被加密,无法使用。 数据库MDF、LDF、log日志文件名字被篡改。 数据库备份被加密,文件名字被篡改。
|
11月前
|
SQL 存储 数据库
SQL Server Management Studio (SSMS) 21 - 微软数据库管理工具
SQL Server Management Studio (SSMS) 21 - 微软数据库管理工具
1441 0