适用范围:SQL Server
使用 SQL Server 审核功能,可以对服务器级别和数据库级别事件组和事件进行审核。 有关详细信息,请参阅 SQL Server 审核(数据库引擎)。 SQL Server。
审核由零个或多个审核操作项组成,这些操作项会记录到审核“ 目标”。 审核目标可以是二进制文件、Windows 应用程序事件日志或 Windows 安全事件日志。 发送到目标的记录可以包含下表中介绍的元素:
| 列名 | 说明 | 类型 | 始终可用 |
|---|---|---|---|
| event_time | 触发可审核作的日期和时间。 | datetime2 | 是 |
| sequence_number | 跟踪单个审核记录中的记录顺序,该记录太大而无法放在写入缓冲区中以进行审核。 | int | 是 |
| action_id | 操作的 ID 提示:若要将 action_id 用作谓词,必须将它从字符串转换为数值。 有关详细信息,请参阅 Filter SQL Server Audit on action_id / class_type predicate(使用 action_id / class_type 谓词筛选 SQL Server 审核)。 |
varchar(4) | 是 |
| succeeded | 指示触发事件的作是否成功。 对于登录事件以外的所有事件,此事件仅报告权限检查是成功还是失败,而不是作。 - 1 = 成功 - 0 = 失败 |
bit | 是 |
| permission_bitmask | 在某些作中,这是授予、拒绝或撤销的权限。 | varbinary(16) | 否 |
| is_column_permission | 指示这是否为列级权限的标志。 当permission_bitmask = 0 时返回 0。 - 1 = True - 0 = False |
bit | 否 |
| session_id | 发生该事件的会话的 ID。 | smallint | 是 |
| server_principal_id | 在其中执行操作的登录上下文 ID。 | int | 是 |
| database_principal_id | 在其中执行操作的数据库用户上下文 ID。 如果不适用,则返回 0。 例如,服务器作。 | int | 否 |
| target_server_principal_id | 正在执行 GRANT/DENY/REVOKE作的服务器主体。 如果不适用,则返回 0。 | int | 是 |
| target_database_principal_id | 执行 GRANT/DENY/REVOKE作的数据库主体。 如果不适用,则返回 0。 | int | 否 |
| object_id | 发生审核的实体的 ID。 这包括: 服务器对象 数据库 数据库对象 架构对象 如果实体是服务器本身,或者未在对象级别执行审核,则返回 0。 例如,身份验证。 |
int | 否 |
| class_type | 审核所依据的可审核实体的类型。 | varchar(2) | 是 |
| session_server_principal_name | 会话的服务器主体。 | sysname | 是 |
| server_principal_name | 当前登录名。 | sysname | 是 |
| server_principal_sid | 当前登录名 SID。 | varbinary(85) | 是 |
| database_principal_name | 当前用户。 | sysname | 否 |
| target_server_principal_name | 操作的目标登录名。 如果不适用,则返回 NULL。 | sysname | 否 |
| target_server_principal_sid | 目标登录名的 SID。 如果不适用,则返回 NULL。 | varbinary(85) | 否 |
| target_database_principal_name | 操作的目标用户。 如果不适用,则返回 NULL。 | sysname | 否 |
| server_instance_name | 发生审核的服务器实例的名称。 使用标准服务器\实例格式。 | sysname | 是 |
| database_name | 发生此操作的数据库上下文。 空。 返回服务器级别发生的审核的 NULL。 | sysname | 否 |
| schema_name | 在其中执行操作的架构上下文。 | sysname | 否 |
| object_name | 发生审核的实体的名称。 这包括: 服务器对象 数据库 数据库对象 架构对象 空。 如果实体是服务器本身,或者未在对象级别执行审核,则返回 NULL。 例如,身份验证。 |
sysname | 否 |
| 语句 | TSQL 语句(如果存在)。 如果不适用,则返回 NULL。 | nvarchar(4000) | 否 |
| additional_information | 仅应用于单个事件的唯一信息将作为 XML 返回。 一些可审核的作包含此类信息。 对于与 TSQL 堆栈关联的作,将以 XML 格式显示一个级别的 TSQL 堆栈。 XML 格式将为: <tsql_stack><frame nest_level = '%u' database_name = '%.*s' schema_name = '%.*s' object_name = '%.*s' /></tsql_stack>帧nest_level指示帧的当前嵌套级别。 模块名称以三部分格式表示(database_name、schema_name和object_name)。 将分析模块名称以转义无效的 xml 字符,例如 '\<','>', '/''_x'。 他们会逃脱的 _xHHHH\_。 HHHH 代表字符的四位数十六进制 UCS-2 代码空。 如果没有事件报告的其他信息,则返回 NULL。 |
nvarchar(4000) | 否 |
| file_name | 记录来自的审核日志文件的路径和名称。 | varchar(260) | 是 |
| audit_file_offset |
适用于:仅限 SQL Server 包含审核记录的文件中的缓冲区偏移量。 |
bigint | 否 |
| user_defined_event_id |
适用于:SQL Server 2012(11.x)及更高版本、Azure SQL 数据库和 SQL 托管实例 作为参数 sp_audit_write传递给系统事件(默认值)和非零的用户定义事件 ID。 有关详细信息,请参阅sp_audit_write(Transact-SQL)。 |
smallint | 否 |
| user_defined_information |
适用于:SQL Server 2012(11.x)及更高版本、Azure SQL 数据库和 SQL 托管实例 用于记录用户希望使用 sp_audit_write 存储过程在审核日志中记录的任何额外信息。 |
nvarchar(4000) | 否 |
| audit_schema_version | 始终为 1 | int | 是 |
| sequence_group_id |
适用于:仅限 SQL Server 唯一标识符 |
varbinary(85) | 否 |
| transaction_id |
仅适用于:SQL Server(从 2016 年开始) 用于标识一个事务中的多个审核事件的唯一标识符 |
bigint | 否 |
| client_ip |
适用于:Azure SQL 数据库 + SQL Server(从 2017 开始) 客户端应用程序的源 IP |
nvarchar(128) | 否 |
| application_name |
适用于:Azure SQL 数据库 + SQL Server(从 2017 开始) 执行导致审核事件的语句的客户端应用程序的名称 |
nvarchar(128) | 否 |
| duration_milliseconds |
适用于:Azure SQL 数据库和 SQL 托管实例 查询执行持续时间(以毫秒为单位) |
bigint | 否 |
| response_rows |
适用于:Azure SQL 数据库和 SQL 托管实例 结果集中返回的行数。 |
bigint | 否 |
| affected_rows |
适用于:仅限 Azure SQL 数据库 受执行的语句影响的行数。 |
bigint | 否 |
| connection_id |
适用于:Azure SQL 数据库和 SQL 托管实例 服务器中连接的 ID |
GUID | 否 |
| data_sensitivity_information |
适用于:仅限 Azure SQL 数据库 根据数据库中的分类列,审核的查询返回的信息类型和敏感度标签。 详细了解 Azure SQL 数据库数据发现和分类 |
nvarchar(4000) | 否 |
| host_name | 客户端连接的主机名 | nvarchar(128) | 否 |
| session_context | 连接的会话上下文信息 | nvarchar(4000) | 否 |
| client_tls_version | 客户端连接使用的 TLS 版本号 | int | 否 |
| client_tls_version_name | 客户端连接使用的 TLS 版本名称 | nvarchar(128) | 否 |
| database_transaction_id | 数据库事务标识符 | bigint | 否 |
| ledger_start_sequence_number |
适用于:SQL Server 2022 及更高版本 账本作的账本开始序列号 |
bigint | 否 |
| external_policy_permissions_checked | 在作期间检查的外部策略权限 | nvarchar(4000) | 否 |
注解
某些作不会填充列的值,因为它可能不适用于该作。
SQL Server 审核为审核记录中的字符字段存储 4,000 个字符的数据。 当从可审核作返回 的additional_information 和 语句 值返回超过 4000 个字符时, sequence_number 列用于将多个记录写入审核报告中,以便单个审核作记录此数据。 过程如下:
语句列分为 4,000 个字符。
SQL Server 审核作为具有部分数据的审核记录的第一行写入。 所有其他字段在每一行中是重复的。
sequence_number值递增。
此过程将一直重复,直至记录了所有数据为止。
可以使用sequence_number值、event_Time、action_id和session_id列来按顺序读取行来连接数据。
相关内容
- 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.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)
- sys.dm_audit_class_type_map(Transact-SQL)