fn_get_audit_file (Transact-SQL)
从由服务器审核创建的审核文件返回信息。有关详细信息,请参阅了解 SQL Server 审核。
语法
fn_get_audit_file ( file_pattern, {default | initial_file_name | NULL }, {default | audit_file_offset | NULL } )
参数
file_pattern
指定要读取的审核文件集的目录(或路径)和文件名。此参数必须包括路径(驱动器盘符或网络共享)和文件名,可以包含通配符。单个星号 (*) 可用于收集审核文件集中的多个文件。例如:<路径>\* - 收集指定位置中的所有审核文件。
<路径>\LoginsAudit_{GUID} - 收集具有指定名称和 GUID 对的所有审核文件。
<路径>\LoginsAudit_{GUID}_00_29384.sqlaudit - 收集特定审核文件。
注意 在无文件名模式的情况下传递路径将生成错误。
initial_file_name
指定审核文件集中要开始读取审核记录的特定文件的路径和名称。注意 initial_file_name 参数必须包含有效条目或者必须包含默认 | NULL 值。
audit_file_offset
指定一个已知位置,该位置包含为 initial_file_name 指定的文件。使用此参数时,函数将从缓冲区中紧跟指定偏移量之后的第一个记录开始读取。注意 audit_file_offset 参数必须包含有效条目或者必须包含默认 | NULL 值。
返回的表
下表描述此函数可返回的审核文件内容。
列名 |
类型 |
说明 |
---|---|---|
event_time |
datetime2 |
触发可审核操作的日期和时间。不可为 Null。 |
sequence_number |
int |
跟踪单个审核记录中的记录顺序,该记录太大而无法放在写入缓冲区中以进行审核。不可为 Null。 |
action_id |
char(4) |
操作的 ID。不可为 Null。 |
succeeded |
bit 1 = 成功 0 = 失败 |
指示触发事件的操作是否成功。不可为 Null。对于除登录事件之外的所有事件,它仅报告权限检查(而不是操作)成功或失败。 |
permission_bitmask |
bigint |
在某些操作中,这是授予、拒绝或撤消的权限。 |
is_column_permission |
bit 1 = true 0 = false |
标志,用于指示是否为列级别权限。不可为 Null。当 permission_bitmask = 0 时返回 0。 |
session_id |
int |
发生该事件的会话 ID。不可为 Null。 |
server_principal_id |
int |
在其中执行操作的登录上下文的 ID。不可为 Null。 |
database_principal_id |
int |
在其中执行操作的数据库用户上下文的 ID。不可为 Null。如果不适用,则返回 0。例如,如果是服务器操作,则返回 0。 |
target_server_principal_id |
int |
执行 GRANT/DENY/REVOKE 操作的服务器主体。不可为 Null。如果不适用,则返回 0。 |
target_database_principal_id |
int |
执行 GRANT/DENY/REVOKE 操作的数据库主体。不可为 Null。如果不适用,则返回 0。 |
object_id |
int |
发生审核的实体的 ID。其中包括:
不可为 Null。如果实体是服务器本身或者没有在对象级别执行审核,则返回 0。例如,对于 Authentication,则返回 0。 |
class_type |
char(2) |
发生审核的可审核实体的类型。不可为 Null。 |
session_server_principal_name |
sysname |
会话的服务器主体。可以为 Null。 |
server_principal_name |
sysname |
当前登录名。可以为 Null。 |
server_principal_sid |
varbinary |
当前登录名 SID。可以为 Null。 |
database_principal_name |
sysname |
当前用户。可以为 Null。如果不可用,则返回 NULL。 |
target_server_principal_name |
sysname |
操作的目标登录名。可以为 Null。如果不适用,则返回 NULL。 |
target_server_principal_sid |
varbinary |
目标登录名的 SID。可以为 Null。如果不适用,则返回 NULL。 |
target_database_principal_name |
sysname |
操作的目标用户。可以为 Null。如果不适用,则返回 NULL。 |
server_instance_name |
nvarchar(120) |
发生审核的服务器实例的名称。使用标准服务器\实例格式。 |
database_name |
sysname |
发生此操作的数据库上下文。可以为 Null。对于在服务器级别发生的审核,返回 NULL。 |
schema_name |
sysname |
发生此操作的架构上下文。可以为 Null。对于在架构外发生的审核,返回 NULL。 |
object_name |
sysname |
发生审核的实体的名称。其中包括:
可以为 Null。如果实体是 Server 自身或者没有在对象级别执行审核,则返回 NULL。例如,对于 Authentication,则返回 NULL。 |
statement |
nvarchar(4000) |
TSQL 语句(如果存在)。可以为 Null。如果不适用,则返回 NULL。 |
additional_information |
nvarchar(4000) |
仅适用于单个事件的唯一信息,以 XML 的形式返回。有少量的可审核操作包含此类信息。 可以为 Null。如果事件没有报告其他信息,则返回 NULL。 |
file_name |
varchar(260) |
作为记录来源的审核日志文件的路径和名称。不可为 Null。 |
audit_file_offset |
bigint |
包含审核记录的文件中的缓冲区偏移量。不可为 Null。 |
注释
如果传递给 fn_get_audit_file 的 file_pattern 参数引用不存在的路径或文件,或者该文件不是审核文件,则会返回 MSG_INVALID_AUDIT_FILE 错误消息。
权限
需要 CONTROL SERVER 权限。
示例
此示例从名为 \\serverName\Audit\HIPPA_AUDIT.sqlaudit 的文件读取。
SELECT * FROM sys.fn_get_audit_file ('\\serverName\Audit\HIPPA_AUDIT.sqlaudit',default,default);
GO
有关如何创建审核的完整示例,请参阅了解 SQL Server 审核。
请参阅