ALTER SERVER AUDIT (Transact-SQL)
使用 SQL Server Audit 功能更改服务器审核对象。 有关详细信息,请参阅SQL Server 审核(数据库引擎)。
适用范围:SQL Server(SQL Server 2012 到当前版本)。 |
语法
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 值必须是后跟 MB、GB、TB 或 UNLIMITED 的整数。 为 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)