fn_get_audit_file (Transact-SQL)

从由服务器审核创建的审核文件返回信息。有关详细信息,请参阅了解 SQL Server 审核

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

语法

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 审核

请参阅

参考

概念