我处于一种不愉快的情况,我需要审计用户通过 SSMS、SQLCMD 等在 SQL Server 2005 数据库上执行的任何查询。
由于无法升级 SQL Server 版本、更改服务器权限等,情况变得更糟。
我目前正在审核特权帐户下的用户登录(上一个问题:审核 SQL Server 2005 中的“sa”登录)。
我担心现在我需要审核正在运行的查询,我需要将服务器端跟踪设置到表,这将引入更高的性能成本。
我已经向谷歌寻求一些建议,但似乎找不到除了“运行服务器端跟踪/分析器”之外的任何东西。
我在这里还有哪些其他选择(如果有)?我是否必须硬着头皮设置高度过滤的服务器端跟踪来捕获这些数据?
不幸的是,没有任何变更数据捕获、变更跟踪(两者都仅来自 SQL 2008 +),甚至没有足够的跟踪事件或跟踪事件组用于事件通知。
您被用于保存所有用户查询的服务器端跟踪所困扰。
SQL Server 审核功能提供了比更改跟踪和更改数据捕获功能更多的有关 SQL Server 实例和数据库事件的详细信息 - 这些功能不跟踪已执行的查询。该功能提供有关谁、什么和何时的信息,并支持对审计事件进行精细过滤。它还跟踪 SELECT 语句的执行。提供三种不同的输出文件类型,全部存储在中央位置以便于管理
数据库级操作提供比服务器级操作更细粒度的过滤。您可以在MSDN - SQL Server 审计操作组和操作上找到所有数据库级审计操作组和事件的完整列表
额外的提示和说明可以查看Methods for auditing SQL Server data changes系列在线文章