我已经SQL Server 2014 Enterprise Edition
安装了。出于隐私考虑,需要记录私有数据上的 SELECT 语句(特定域用户除外),由写入数据库的服务使用。
创建数据库级审计规范效果很好。例如
CREATE DATABASE AUDIT SPECIFICATION [DatabaseAuditSpecification-01]
FOR SERVER AUDIT [My_Audit]
ADD (SELECT ON SCHEMA::[dbo] BY [public])
WITH (STATE = OFF)
GO
Run Code Online (Sandbox Code Playgroud)
导致每个人的所有 SELECT 语句都写入日志文件。当我用 替换SCHEMA::[dbo]
时[MyTable]
,日志被正确过滤为 SELECTs on MyTable
only。
但是当我替换public
为特定的用户名时MYDOMAIN\myuser
,日志条目不会像我预期的那样针对给定的用户名进行过滤。
CREATE DATABASE AUDIT SPECIFICATION [DatabaseAuditSpecification-01]
FOR SERVER AUDIT [My_Audit]
ADD (SELECT ON SCHEMA::[dbo] BY [MYDOMAIN\myuser])
WITH (STATE = OFF)
GO
Run Code Online (Sandbox Code Playgroud)
任何用户发出的每个 SELECT都被记录下来。
我查询sys.server_principals
以检查给定的用户是否是有效的主体名称,但它实际上显示在结果中。
我的第二个审计规范有什么问题?
编辑:似乎有问题的 CREATE 语句已被 …