Sql server 如何定义数据库审计规范';任何用户';

Sql server 如何定义数据库审计规范';任何用户';,sql-server,tsql,sql-server-2012,audit,Sql Server,Tsql,Sql Server 2012,Audit,我想跟踪许多表上的插入、更新和删除。我现在拥有的是 ALTER DATABASE AUDIT SPECIFICATION [mySpec] ADD (INSERT ON OBJECT::[dbo].[SomeTable] BY [SomeUser]), ADD (UPDATE ON OBJECT::[dbo].[SomeTable] BY [SomeUser]), ADD (DELETE ON OBJECT::[dbo].[SomeTable] BY [SomeUser]), ... Mor

我想跟踪许多表上的插入、更新和删除。我现在拥有的是

ALTER DATABASE AUDIT SPECIFICATION [mySpec]

ADD (INSERT ON OBJECT::[dbo].[SomeTable] BY [SomeUser]),
ADD (UPDATE ON OBJECT::[dbo].[SomeTable] BY [SomeUser]),
ADD (DELETE ON OBJECT::[dbo].[SomeTable] BY [SomeUser]),

... More Tables ..

WITH (STATE = ON);

是否有一组主体等同于我可以使用的“任何用户”,而不是脚本中的“SomeUser”?

您可以使用
public

例如:

或所有用户所属的任何其他组

您还可以对要审核的事件进行分组

ALTER DATABASE AUDIT SPECIFICATION [mySpec]
ADD (INSERT, UPDATE, DELETE ON OBJECT::[dbo].[SomeTable] BY [public])
...
如果要审核所有表,可以使用数据库对象

ALTER DATABASE AUDIT SPECIFICATION [mySpec]
ADD (INSERT, UPDATE, DELETE ON DATABASE::databasename BY [public])
...

因此,不可能有任何用户不是[公众]的成员?因为我不是100%确定的documentation@HughJones“每个SQL Server登录都属于公共服务器角色”谢谢。我接受你的回答,但我非常失望地发现审计没有记录语句的参数值——这使得它完全没有用处。事实上,不是这样。也许CDC更适合你的需要
ALTER DATABASE AUDIT SPECIFICATION [mySpec]
ADD (INSERT, UPDATE, DELETE ON DATABASE::databasename BY [public])
...