ALTER SERVER AUDIT (Transact-SQL)

适用于:SQL ServerAzure SQL 托管实例

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

Transact-SQL 语法约定

语法

ALTER SERVER AUDIT audit_name
{
    [ TO { { FILE ( <file_options> [ , ...n ] ) } | APPLICATION_LOG | SECURITY_LOG } | URL ]
    [ 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' }

参数

去{ file |APPLICATION_LOG |安全 |网址}

确定审核目标的位置。 可用的选项包括二进制文件、Windows 应用程序日志或 Windows 安全日志。

重要

在 Azure SQL 托管实例中,SQL 审核功能在服务器层级运行,并在 Azure Blob 存储中存储 .xel 文件。

文件路径 = 'os_file_path'

审核记录的路径。 文件名是基于审核名称和审核 GUID 生成的。

最大大小 = max_size

指定审核文件可增大到的最大大小。 max_size值必须是整数,后面跟一个MB、、GBTBUNLIMITED。 你可以为max_sizeMB指定最小大小2,最大为2,147,483,647TB。 当 UNLIMITED 指定时,文件会不断增长,直到磁盘满。 指定小于 2 MB 的值会 MSG_MAXSIZE_TOO_SMALL 增加错误。 默认值为 UNLIMITED

MAX_ROLLOVER_FILES = 整数 |无限

指定要保留在文件系统中的最大文件数。 当设置为 MAX_ROLLOVER_FILES = 0时,创建的滚动文件数量没有限制。 默认值为 0。 可以指定的最大文件数为 2,147,483,647。

MAX_FILES = 整数

指定可创建的审核文件的最大数目。 当达到限制时,它不会切换到第一个文件。 MAX_FILES达到限制后,导致生成更多审核事件的任何操作都会失败并出现错误。

RESERVE_DISK_SPACE = { ON |关闭 }

此选项会按 MAXSIZE 值为磁盘上的文件预先分配大小。 仅当 MAXSIZE 不等 UNLIMITED于 时才适用。 默认值为 OFF

QUEUE_DELAY = 整数

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

ON_FAILURE = { 继续 |停工 |FAIL_OPERATION }

表示如果 SQL Server 无法写入审计日志,写入目标的实例应当失败、继续还是停止。

CONTINUE

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

SHUTDOWN

如果 SQL Server 出于任何原因无法将数据写入到审核目标,则强制关闭 SQL Server 实例。 执行 ALTER 语句的登录名必须具有 SQL Server 内的 SHUTDOWN 权限。 即使稍后从执行的登录名中撤销 SHUTDOWN 权限,关闭行为仍然存在。 如果用户没有这个权限,那么该语句失败,审计也不会被修改。 在审核失败可能损害系统的安全或完整性时,使用此选项。 有关详细信息,请参阅 SHUTDOWN

FAIL_OPERATION

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

STATE = { 在 |不对 }

启用或禁用审核收集记录。 将正在进行的审计状态(从 ONOFF为 )会创建一个审计记录,表明审计已被停止,主理停止审计,以及审计停止的时间。

MODIFY NAME = new_audit_name

更改审核的名称。 不能和其他选项一起使用。

predicate_expression

指定用于确定是否应处理事件的谓词表达式。 谓词表达式的长度限制为 3,000 个字符,这会限制字符串参数。

event_field_name

表示标识谓词源的事件字段的名称。 sys.fn_get_audit_file中介绍了审核字段。 除 file_nameaudit_file_offset 之外的所有字段都可以进行审核。

数字

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

'string'

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

备注

当你调用 ALTER AUDIT时,必须至少指定一个 TOWITHMODIFY NAME 从句。

为了更改审核,必须将审核的状态设置为 OFF 选项。 如果 ALTER AUDIT 在启用审计且有除 STATE = OFF之外的任何选项时运行,你会收到 MSG_NEED_AUDIT_DISABLED 错误信息。

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

审计创建后,你无法更改审计的GUID。

ALTER SERVER AUDIT 语句不能在用户事务中使用。

权限

要创建、修改或丢弃服务器审计主体,必须拥有 ALTER ANY SERVER AUDIT 或 CONTROL SERVER 权限。

示例

A. 更改服务器审计名称

下面的示例将服务器审核 HIPAA_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. 更改服务器审计目标

下面的示例将名为 HIPAA_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子句

以下示例修改了在示例C CREATE SERVER AUDIT中创建的其中子句。 如果为 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

Transact-SQL 参考资料