sys.fn_get_audit_file (Transact-SQL)

从服务器审核在 SQL Server 中创建的审核文件返回信息。 有关详细信息,请参阅SQL Server 审核(数据库引擎)

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

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

语法

fn_get_audit_file ( file_pattern, 
    { default | initial_file_name | NULL }, 
    { default | audit_record_offset | NULL } )

参数

  • file_pattern
    指定要读取的审核文件集的目录(或路径)和文件名。 类型为 nvarchar(260)。 此参数必须包括路径(驱动器盘符或网络共享)和文件名,可以包含通配符。 单个星号 (*) 可用于收集审核文件集中的多个文件。 例如:

    • <路径>\* - 收集指定位置中的所有审核文件。

    • <路径>\LoginsAudit_{GUID} - 收集具有指定名称和 GUID 对的所有审核文件。

    • <路径>\LoginsAudit_{GUID}_00_29384.sqlaudit - 收集特定审核文件。

    备注

    在无文件名模式的情况下传递路径将生成错误。

  • initial_file_name
    指定审核文件集中要开始读取审核记录的特定文件的路径和名称。 类型为 nvarchar(260)。

    备注

    initial_file_name 参数必须包含有效条目或者必须包含默认 | NULL 值。

  • audit_record_offset
    指定一个已知位置,该位置包含为 initial_file_name 指定的文件。 使用此参数时,函数将从缓冲区中紧跟指定偏移量之后的第一个记录开始读取。

    备注

    audit_record_offset 参数必须包含有效条目或者必须包含默认 | NULL 值。类型为 bitint。

返回的表

下表描述此函数可返回的审核文件内容。

列名

类型

说明

event_time

datetime2

触发可审核操作的日期和时间。 不可为 Null。

sequence_number

int

跟踪单个审核记录中的记录顺序,该记录太大而无法放在写入缓冲区中以进行审核。 不可为 Null。

action_id

varchar(4)

操作的 ID。 不可为 Null。

succeeded

bit

1 = 成功

0 = 失败

指示触发事件的操作是否成功。 不可为 Null。 对于除登录事件之外的所有事件,它仅报告权限检查(而不是操作)成功或失败。

permission_bitmask

varbinary(16)

在某些操作中,这是授予、拒绝或撤消的权限。

is_column_permission

bit

1 = true

0 = false

标志,用于指示是否为列级别权限。 不可为 Null。 当 permission_bitmask = 0 时返回 0。

session_id

smallint

发生该事件的会话的 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。 其中包括:

  • 服务器对象

  • Databases

  • 数据库对象

  • 架构对象

不可为 Null。 如果实体是服务器本身或者没有在对象级别执行审核,则返回 0。 例如,对于 Authentication,则返回 NULL。

class_type

varchar(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

sysname

发生审核的服务器实例的名称。 使用标准服务器\实例格式。

database_name

sysname

发生此操作的数据库上下文。 可以为 Null。 对于在服务器级别发生的审核,返回 NULL。

schema_name

sysname

发生此操作的架构上下文。 可以为 Null。 对于在架构外发生的审核,返回 NULL。

object_name

sysname

发生审核的实体的名称。 其中包括:

  • 服务器对象

  • Databases

  • 数据库对象

  • 架构对象

可以为 Null。 如果实体是 Server 自身或者没有在对象级别执行审核,则返回 NULL。 例如,对于 Authentication,则返回 NULL。

statement

nvarchar(4000)

TSQL 语句(如果存在)。 可以为 Null。 如果不适用,则返回 NULL。

additional_information

nvarchar(4000)

仅适用于单个事件的唯一信息,以 XML 的形式返回。 有少量的可审核操作包含此类信息。

对于具有与操作相关联的 TSQL 堆栈的操作,将以 XML 格式显示一个级别的 TSQL 堆栈。 该 XML 格式如下:

<tsql_stack><frame nest_level = '%u' database_name = '%.*s' schema_name = '%.*s' object_name = '%.*s' /></tsql_stack>

Frame nest_level 指示框架的当前嵌套级别。 模块名称表示为由三部分组成的格式(database_name、schema_name 和 object_name)。 将对该模块名称进行分析,以使 '<'、'>'、'/'、'_x' 之类的无效 xml 字符转义。 这些无效字符将转义为 _xHHHH_。 HHHH 代表该字符对应的四位十六进制 UCS-2 代码。

可以为 Null。 如果事件没有报告其他信息,则返回 NULL。

file_name

varchar(260)

作为记录来源的审核日志文件的路径和名称。 不可为 Null。

audit_file_offset

bigint

包含审核记录的文件中的缓冲区偏移量。 不可为 Null。

user_defined_event_id

smallint

作为 sp_audit_write 参数传递的用户定义事件 ID。 对于系统事件为 NULL(默认值),对于用户定义事件为非零值。 有关详细信息,请参阅 sp_audit_write (Transact-SQL)

适用于:SQL Server 2012 到 SQL Server 2014。

user_defined_information

nvarchar(4000)

用于记录用户想要通过使用 sp_audit_write 存储过程记录在审核日志中的任何附加信息。

适用于:SQL Server 2012 到 SQL Server 2014。

注释

如果传递给 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 审核(数据库引擎)

请参阅

参考

CREATE SERVER AUDIT (Transact-SQL)

ALTER SERVER AUDIT (Transact-SQL)

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.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)

sys.dm_audit_class_type_map (Transact-SQL)

概念

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