ALTER SERVER AUDIT (Transact-SQL)

使用 SQL Server Audit 功能更改服务器审核对象。 有关详细信息,请参阅SQL Server 审核(数据库引擎)

适用范围:SQL Server(SQL Server 2012 到当前版本)。

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

语法

ALTER SERVER AUDIT audit_name
{
    [ TO { { FILE ( <file_options> [, ...n] ) } | APPLICATION_LOG | SECURITY_LOG } ]
    [ WITH ( <audit_options> [ , ...n] ) ] 
    [ WHERE <predicate_expression> ]
}
| REMOVE WHERE
| MODIFY NAME = new_audit_name
[ ; ]

<file_options>::=
{
      FILEPATH = 'os_file_path' 
    | MAXSIZE = { max_size { MB | GB | TB } | UNLIMITED } 
    | MAX_ROLLOVER_FILES = { integer | UNLIMITED } 
    | MAX_FILES = integer 
    | RESERVE_DISK_SPACE = { ON | OFF } 
}

<audit_options>::=
{
      QUEUE_DELAY = integer 
    | ON_FAILURE = { CONTINUE | SHUTDOWN | FAIL_OPERATION } 
    | STATE = = { ON | OFF } 
}

<predicate_expression>::=
{
    [NOT ] <predicate_factor> 
    [ { AND | OR } [NOT ] { <predicate_factor> } ] 
    [,...n ]
}

<predicate_factor>::= 
    event_field_name { = | < > | ! = | > | > = | < | < = } { number | ' string ' }

参数

  • TO { FILE | APPLICATION_LOG | SECURITY }
    确定审核目标的位置。 可用的选项包括二进制文件、Windows 应用程序日志或 Windows 安全日志。

  • FILEPATH = 'os_file_path'
    审核记录的路径。 文件名是基于审核名称和审核 GUID 生成的。

  • MAXSIZE **=**max_size
    指定审核文件可增大到的最大大小。 max_size 值必须是后跟 MBGBTBUNLIMITED 的整数。 为 max_size 指定的最小大小为 2 MB,最大大小为 2,147,483,647 TB。 如果指定为 UNLIMITED,则文件将增长到磁盘变满为止。 指定一个小于 2 MB 的值将引发错误 MSG_MAXSIZE_TOO_SMALL。 默认值为 UNLIMITED

  • MAX_ROLLOVER_FILES **=**integer | UNLIMITED
    指定要保留在文件系统中的最大文件数。 设置为 MAX_ROLLOVER_FILES=0 时,可创建的滚动更新文件的数量不受任何限制。 默认值为 0。 可以指定的最大文件数为 2,147,483,647。

  • MAX_FILES =integer
    指定可创建的审核文件的最大数目。 当达到此限制时,不滚动更新到第一个文件。 在达到 MAX_FILES 限制时,导致生成附加审核事件的任何操作都将失败并报告错误。

  • RESERVE_DISK_SPACE = { ON | OFF }
    此选项会按 MAXSIZE 值为磁盘上的文件预先分配大小。 仅在 MAXSIZE 不等于 UNLIMITED 时适用。 默认值为 OFF。

  • QUEUE_DELAY **=**integer
    确定在强制处理审核操作之前可能经过的时间(以毫秒为单位)。 值 0 指示同步传递。 可设置的最小延迟值为 1000(1 秒),这是默认值。 最大值为 2,147,483,647(2,147,483.647 秒或者 24 天 20 小时 31 分钟 23.647 秒)。 指定无效数字将引发错误 MSG_INVALID_QUEUE_DELAY。

  • ON_FAILURE = { CONTINUE | SHUTDOWN | FAIL_OPERATION}
    指示在 SQL Server 无法写入审核日志时写入目标的实例是应失败、继续还是停止。

    • CONTINUE
      SQL Server 操作将继续。 审核记录将不会保留。 审核将继续尝试将事件记入日志,并且在故障条件得到解决后将恢复。 选择继续选项可以允许未经审核的活动,这可能违反了您的安全策略。 在数据库引擎的继续操作比维护完整审核更重要时,使用此选项。

    • SHUTDOWN
      在写入目标的服务器实例无法将数据写入审核目标时,强制关闭服务器。 发出此命令的登录名必须具有 SHUTDOWN 权限。 如果该登录名没有此权限,则该函数将失败并将引发错误消息。 将不会发生审核的事件。 在审核失败可能损害系统的安全或完整性时,使用此选项。

    • FAIL_OPERATION
      如果数据库操作会导致审核的事件,则数据库操作将失败。 不会导致审核的事件的操作可以继续,但不会发生审核的事件。 审核将继续尝试将事件记入日志,并且在故障条件得到解决后将恢复。 在维护完整审核比对数据库引擎的完全访问权限更重要时,使用此选项。

  • STATE = { ON | OFF }
    启用或禁用审核收集记录。 更改运行的审核的状态(从 ON 到 OFF)将创建审核停止时的审核项、停止审核的主体以及停止审核的时间。

  • MODIFY NAME = new_audit_name
    更改审核的名称。 不能与任何其他选项一起使用。

  • predicate_expression
    指定用于确定是否应处理事件的谓词表达式。 谓词表达式限制在 3000 个字符,这限制了字符串参数。

  • event_field_name
    表示标识谓词源的事件字段的名称。 在 sys.fn_get_audit_file (Transact-SQL) 中介绍了审核字段。 除 file_name 和 audit_file_offset 之外的所有字段都可以进行审核。

  • number
    任何数值类型,包括 decimal。 局限性在于缺少可用物理内存,或数值过大而无法用 64 位整数表示。

  • ' string '
    进行谓词比较所需的 ANSI 字符串或 Unicode 字符串。 不为谓词比较函数执行隐式字符串类型转换。 传递错误类型会导致出错。

注释

调用 ALTER AUDIT 时,必须指定至少一个 TO、WITH 或 MODIFY NAME 子句。

为了更改审核,必须将审核的状态设置为 OFF 选项。 使用 STATE=OFF 以外的任何选项启用审核时,如果 ALTER AUDIT 正在运行,您将接收到 MSG_NEED_AUDIT_DISABLED 错误消息。

无需停止审核即可添加、更改和删除审核规范。

创建审核后无法更改审核的 GUID。

权限

若要创建、更改或删除服务器审核主体,必须具有 ALTER ANY SERVER AUDIT 或 CONTROL SERVER 权限。

示例

A.更改服务器审核名称

下面的示例将服务器审核 HIPPA_Audit 的名称更改为 HIPAA_Audit_Old。

USE master
GO
ALTER SERVER AUDIT HIPAA_Audit
WITH (STATE = OFF);
GO
ALTER SERVER AUDIT HIPAA_Audit
MODIFY NAME = HIPAA_Audit_Old;
GO
ALTER SERVER AUDIT HIPAA_Audit_Old
WITH (STATE = ON);
GO

B.更改服务器审核目标

下面的示例将名为 HIPPA_Audit 的服务器审核更改为以文件为目标。

USE master
GO
ALTER SERVER AUDIT HIPAA_Audit
WITH (STATE = OFF);
GO
ALTER SERVER AUDIT HIPAA_Audit
TO FILE (FILEPATH ='\\SQLPROD_1\Audit\',
          MAXSIZE = 1000 MB,
          RESERVE_DISK_SPACE=OFF)
WITH (QUEUE_DELAY = 1000,
       ON_FAILURE = CONTINUE);
GO
ALTER SERVER AUDIT HIPAA_Audit
WITH (STATE = ON);
GO

C.更改服务器审核 WHERE 子句

下面的示例修改在 CREATE SERVER AUDIT (Transact-SQL) 的示例 C 中创建的 where 子句。 如果为 27,则新的 WHERE 子句将筛选用户定义的事件。

ALTER SERVER AUDIT [FilterForSensitiveData] WITH (STATE = OFF)
GO
ALTER SERVER AUDIT [FilterForSensitiveData]
WHERE user_defined_event_id = 27;
GO
ALTER SERVER AUDIT [FilterForSensitiveData] WITH (STATE = ON);
GO

D.删除 WHERE 子句

下面的示例将删除 WHERE 子句谓词表达式。

ALTER SERVER AUDIT [FilterForSensitiveData] WITH (STATE = OFF)
GO
ALTER SERVER AUDIT [FilterForSensitiveData]
REMOVE WHERE;
GO
ALTER SERVER AUDIT [FilterForSensitiveData] WITH (STATE = ON);
GO

E.重命名服务器审核

下面的示例将服务器审核名称从 FilterForSensitiveData 更改为 AuditDataAccess。

ALTER SERVER AUDIT [FilterForSensitiveData] WITH (STATE = OFF)
GO
ALTER SERVER AUDIT [FilterForSensitiveData]
MODIFY NAME = AuditDataAccess;
GO
ALTER SERVER AUDIT [AuditDataAccess] WITH (STATE = ON);
GO

请参阅

参考

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)

概念

创建服务器审核和服务器审核规范