CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)

使用 SQL Server 审核功能创建数据库审核规范对象。有关详细信息,请参阅了解 SQL Server 审核

主题链接图标Transact-SQL 语法约定

语法

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 ]
}

参数

  • audit_specification_name
    是审核规范的名称。

  • audit_name
    是应用此规范的审核的名称。

  • audit_action_specification
    是主体对安全对象执行的应记录到审核中的操作的规范。

  • action
    是一个或多个数据库级别可审核操作的名称。有关审核操作的列表,请参阅 SQL Server 审核操作组和操作

  • audit_action_group_name
    是一个或多个数据库级别可审核操作组的名称。有关审核操作组的列表,请参阅 SQL Server 审核操作组和操作

  • class
    是安全对象上的类名(如果适用)。

  • securable
    是应用审核操作或审核操作组的数据库中的表、视图或其他安全对象。有关详细信息,请参阅安全对象

  • principal
    是应用审核操作或审核操作组的 SQL Server 主体的名称。有关详细信息,请参阅主体(数据库引擎)

  • WITH ( STATE = { ON | OFF } )
    允许或禁止审核收集此审核规范的记录。

注释

数据库审核规范是驻留在给定数据库中的非安全对象。数据库审核规范在创建之后处于禁用状态。

有关 SQL Server 审核中的数据库审核规范的信息,请使用 sys.database_ audit_specifications 目录视图。

当您在用户数据库中创建或修改数据库审核规范时,不要包括针对服务器范围对象(例如系统视图)的审核操作。如果包括服务器范围的对象,将会创建审核。但是,服务器范围对象将不包括,并且将不返回任何错误。若要审核服务器范围的对象,请使用 master 数据库中的数据库审核规范。

权限

具有 ALTER ANY DATABASE AUDIT权限的用户可以创建数据库审核规范并将其绑定到任何审核。

创建数据库审核规范后,具有 CONTROL SERVER 或ALTER ANY DATABASE AUDIT权限的主体或 sysadmin 帐户即可查看该规范。

示例

下面的示例创建名为 Payrole_Security_Audit 的服务器审核,然后创建名为 Payrole_Security_Audit 的数据库审核规范,该规范针对 AdventureWorks 数据库中的 HumanResources.EmployeePayHistory 表,审核 dbo 用户发出的 SELECT 和 INSERT 语句。

USE master ;
GO
-- Create the server audit.
CREATE SERVER AUDIT Payrole_Security_Audit
    TO FILE ( FILEPATH = 
'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA' ) ;
GO
-- Enable the server audit.
ALTER SERVER AUDIT Payrole_Security_Audit 
WITH (STATE = ON) ;
GO
-- Move to the target database.
USE AdventureWorks ;
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 dbo )
WITH (STATE = ON) ;
GO

请参阅

参考

概念