CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)
使用 SQL Server 审核功能创建数据库审核规范对象。 有关详细信息,请参阅 SQL Server 审核(数据库引擎)。
语法
CREATE DATABASE AUDIT SPECIFICATION audit_specification_name
{
FOR SERVER AUDIT audit_name
[ { ADD ( { <audit_action_specification> | audit_action_group_name } )
} [, ...n] ]
[ WITH ( STATE = { ON | OFF } ) ]
}
[ ; ]
<audit_action_specification>::=
{
action [ ,...n ]ON [ class :: ] securable BY principal [ ,...n ]
}
注意
若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档。
参数
audit_specification_name
是审核规范的名称。
audit_name
是应用此规范的审核的名称。
audit_action_specification
是主体对安全对象执行的应记录到审核中的操作的规范。
action
是一个或多个数据库级别可审核操作的名称。 要获取审核操作列表,请参阅 SQL Server 审核操作组和操作。
audit_action_group_name
是一个或多个数据库级别可审核操作组的名称。 要获取审核操作组列表,请参阅 SQL Server 审核操作组和操作。
class
是安全对象上的类名(如果适用)。
securable
是应用审核操作或审核操作组的数据库中的表、视图或其他安全对象。 有关详细信息,请参阅 Securables。
principal
应用审核操作或审核操作组的数据库主体的名称。 使用数据库主体 public
审核所有数据库主体。 有关详细信息,请参阅主体(数据库引擎)。
WITH ( STATE = { ON | OFF } )
允许或禁止审核收集此审核规范的记录。
备注
数据库审核规范是驻留在给定数据库中的非安全对象。 数据库审核规范在创建之后处于禁用状态。
权限
拥有 ALTER ANY DATABASE AUDIT
权限的用户可以创建数据库审核规范并将其绑定到任何审核。
在创建数据库审核规范之后,拥有 CONTROL SERVER
权限的用户或 sysadmin
帐户可查看该规范。
示例
A. 审核任何数据库主体的表上的 SELECT 和 INSERT
下面的示例针对 AdventureWorks2022
数据库中的 HumanResources.EmployeePayHistory
表,创建名为 Payrole_Security_Audit
的服务器审核,然后创建可由 public
数据库角色的任何成员审核 SELECT
和 INSERT
语句的数据库审核规范,其名称为 Payrole_Security_Audit
。 这样做的效果是,每个用户都会被审核,因为每个用户始终都是角色 public
的成员。
USE master ;
GO
-- Create the server audit.
CREATE SERVER AUDIT Payrole_Security_Audit
TO FILE ( FILEPATH =
'D:\SQLAudit\' ) ; -- make sure this path exists
GO
-- Enable the server audit.
ALTER SERVER AUDIT Payrole_Security_Audit
WITH (STATE = ON) ;
GO
-- Move to the target database.
USE AdventureWorks2022;
GO
-- Create the database audit specification.
CREATE DATABASE AUDIT SPECIFICATION Audit_Pay_Tables
FOR SERVER AUDIT Payrole_Security_Audit
ADD (SELECT , INSERT
ON HumanResources.EmployeePayHistory BY public )
WITH (STATE = ON) ;
GO
B. 审核特定数据库角色“sales”架构中所有对象上的任何 DML(INSERT、UPDATE 或 DELETE)
下面的示例针对 DataModification_Security_Audit
数据库中 Audit_Data_Modification_On_All_Sales_Tables
架构的所有对象,创建名为 INSERT
的服务器审核,然后创建可由新数据库角色 UPDATE
中的用户审核 DELETE
、SalesUK
和 Sales
语句的数据库审核规范,其名称为 AdventureWorks2022
。
USE master ;
GO
-- Create the server audit.
-- Change the path to a path that the SQLServer Service has access to.
CREATE SERVER AUDIT DataModification_Security_Audit
TO FILE ( FILEPATH =
'D:\SQLAudit\' ) ; -- make sure this path exists
GO
-- Enable the server audit.
ALTER SERVER AUDIT DataModification_Security_Audit
WITH (STATE = ON) ;
GO
-- Move to the target database.
USE AdventureWorks2022;
GO
CREATE ROLE SalesUK
GO
-- Create the database audit specification.
CREATE DATABASE AUDIT SPECIFICATION Audit_Data_Modification_On_All_Sales_Tables
FOR SERVER AUDIT DataModification_Security_Audit
ADD ( INSERT, UPDATE, DELETE
ON Schema::Sales BY SalesUK )
WITH (STATE = ON) ;
GO
另请参阅
CREATE SERVER AUDIT (Transact-SQL)
ALTER SERVER AUDIT (Transact-SQL)
DROP SERVER AUDIT (Transact-SQL)
CREATE SERVER AUDIT SPECIFICATION (Transact-SQL)
ALTER SERVER AUDIT SPECIFICATION (Transact-SQL)
DROP SERVER AUDIT SPECIFICATION (Transact-SQL)
CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)
ALTER DATABASE AUDIT SPECIFICATION (Transact-SQL)
DROP DATABASE AUDIT SPECIFICATION (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL)
sys.fn_get_audit_file (Transact-SQL)
sys.server_audits (Transact-SQL)
sys.server_file_audits (Transact-SQL)
sys.server_audit_specifications (Transact-SQL)
sys.server_audit_specification_details (Transact-SQL)
sys.database_audit_specifications (Transact-SQL)
sys.database_audit_specification_details (Transact-SQL)
sys.dm_server_audit_status (Transact-SQL)
sys.dm_audit_actions (Transact-SQL)
创建服务器审核和服务器审核规范