活动
CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)
适用于: SQL Server
Azure 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 审核操作组和操作。
一个或多个数据库级可审核操作组的名称。 要获取审核操作组列表,请参阅 SQL Server 审核操作组和操作。
安全对象的类名称(如果适用)。
要对其应用审核操作或审核操作组的数据库中的表、视图或其他安全对象。 有关详细信息,请参阅 Securables。
要对其应用审核操作或审核操作组的数据库主体的名称。 若要审核所有数据库主体,请使用 公共 数据库主体。 有关详细信息,请参阅主体(数据库引擎)。
允许或禁止审核收集此审核规范的记录。
数据库审核规范是驻留在给定数据库中的非安全对象。 数据库审核规范在创建之后处于禁用状态。
拥有 ALTER ANY DATABASE AUDIT
权限的用户可以创建数据库审核规范并将其绑定到任何审核。
创建数据库审核规范后,具有 CONTROL SERVER
权限或 sysadmin
帐户的用户可以查看该规范。
本文中的 Transact-SQL 代码示例使用 AdventureWorks2022
或 AdventureWorksDW2022
示例数据库,可从 Microsoft SQL Server 示例和社区项目主页下载它。
以下示例为表创建一个调用Payroll_Security_Audit
的服务器审核,然后创建一个数据库审核规范,HumanResources.EmployeePayHistory
该规范由Payroll_Security_Audit
公共数据库角色的任何成员进行审核SELECT
和INSERT
语句。 审核每个用户,因为每个用户始终是公共角色的成员。
USE master;
GO
-- Create the server audit.
CREATE SERVER AUDIT Payroll_Security_Audit
TO FILE (FILEPATH = 'D:\SQLAudit\'); -- make sure this path exists
GO
-- Enable the server audit.
ALTER SERVER AUDIT Payroll_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 Payroll_Security_Audit ADD (
SELECT, INSERT ON HumanResources.EmployeePayHistory BY PUBLIC
)
WITH (STATE = ON);
GO
以下示例为架构中的所有对象创建一个调用DataModification_Security_Audit
的服务器审核,然后创建一个数据库Audit_Data_Modification_On_All_Sales_Tables
审核规范,该规范称为审核INSERT
、UPDATE
由DELETE
用户在新的数据库角色SalesUK
中的语句。Sales
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 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)
目录视图和 DMV: