Поделиться через


Записи подсистемы аудита SQL Server

Область применения:SQL Server

Функция аудита SQL Server позволяет выполнять аудит групп событий и событий уровня сервера на уровне сервера. Дополнительные сведения см. в статье Аудит SQL Server (ядро СУБД). SQL Server.

Аудит содержит ноль или более элементов действия аудита, записываемых в цельаудита. Цель аудита может быть двоичным файлом, журналом событий приложений Windows или журналом событий безопасности Windows. Записи, переданные в цель, могут содержать элементы, описанные в приведенной ниже таблице.

Имя столбца Описание Тип Доступные всегда
event_time Дата и время запуска проверяемого действия. datetime2 Да
sequence_number Отслеживает последовательность записей в одной записи аудита, слишком большой, чтобы уместиться в буфере записи для аудитов. int Да
action_id Идентификатор действия.

Совет. Для использования значения action_id в качестве предиката его следует преобразовать из строки символов в числовое значение. Дополнительные сведения см. в статье Фильтрация подсистемы аудита SQL Server по предикату action_id / class_type.
varchar(4) Да
succeeded Указывает, успешно ли выполнено действие, активировающее событие. Для всех событий, отличных от событий входа, это сообщает только о том, выполнена ли проверка разрешений успешно или не выполнена, а не операция.
- 1 = успех
- 0 = сбой
bit Да
permission_bitmask В некоторых действиях это разрешения, которые были предоставлены, отклонены или отменены. varbinary(16) No
is_column_permission Флаг, указывающий, является ли это разрешением уровня столбца. Возвращает значение 0, когда permission_bitmask = 0.
- 1 = Истина
- 0 = Ложь
bit No
session_id Идентификатор сеанса, в котором произошло событие. smallint Да
server_principal_id Идентификатор контекста имени входа, в котором выполнено действие. int Да
database_principal_id Идентификатор контекста пользователя базы данных, в котором выполнено действие. Возвращает значение 0, если это не применяется. Например, операция сервера. int No
target_server_principal_id Субъект-сервер, на который выполняется операция GRANT/DENY/REVOKE. Возвращает значение 0, если применимо. int Да
target_database_principal_id Субъект базы данных выполняет операцию GRANT/DENY/REVOKE. Возвращает значение 0, если применимо. int No
object_id Идентификатор сущности, в которой произошел аудит. К ним относятся:
объекты серверов;
базы данных
Объекты базы данных
объекты схемы;
Возвращает значение 0, если сущность является самой сервером или если аудит не выполняется на уровне объекта. Например, проверка подлинности.
int No
class_type Тип проверяемой сущности, в которую выполняется аудит. varchar(2) Да
session_server_principal_name Участник сервера для данного сеанса. sysname Да
server_principal_name Текущее имя входа. sysname Да
server_principal_sid Идентификатор безопасности текущего имени входа. varbinary(85) Да
database_principal_name Текущий пользователь. sysname No
target_server_principal_name Целевое имя входа действия. Возвращает значение NULL, если применимо. sysname No
target_server_principal_sid Идентификатор безопасности целевого имени входа. Возвращает значение NULL, если применимо. varbinary(85) No
target_database_principal_name Целевой пользователь действия. Возвращает значение NULL, если применимо. sysname No
server_instance_name Имя экземпляра сервера, где проводился аудит. Используется стандартный формат сервера\экземпляра. sysname Да
database_name Контекст базы данных, в котором выполнялось действие. Допускает значение NULL. Возвращает значение NULL для аудита, происходящих на уровне сервера. sysname No
schema_name Контекст схемы, в котором выполнялось действие. sysname No
object_name Имя сущности, для которой проводился аудит. К ним относятся:
объекты серверов;
базы данных
Объекты базы данных
объекты схемы;
Допускает значение NULL. Возвращает значение NULL, если сущность является сервером или если аудит не выполняется на уровне объекта. Например, проверка подлинности.
sysname No
инструкция Инструкция TSQL, если она существует. Возвращает значение NULL, если применимо. nvarchar(4000) No
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\_. HHH обозначает шестнадцатеричный шестнадцатеричный код UCS-2 для символа.
Допускает значение NULL. Возвращает значение NULL, если в событии нет дополнительных сведений.
nvarchar(4000) No
file_name Путь и имя файла журнала аудита, из который была получена запись. varchar(260) Да
audit_file_offset Область применения: только SQL Server

Смещение буфера в файле, содержащее запись аудита.
bigint No
user_defined_event_id Область применения: SQL Server 2012 (11.x) и более поздних версий, База данных SQL Azure и Управляемый экземпляр SQL

Определяемый пользователем идентификатор события, переданный в качестве аргумента sp_audit_writeNULL для системных событий (по умолчанию) и ненулевого значения для определяемого пользователем события. Дополнительные сведения см. в разделе sp_audit_write (Transact-SQL).
smallint No
user_defined_information Область применения: SQL Server 2012 (11.x) и более поздних версий, База данных SQL Azure и Управляемый экземпляр SQL

Используется для записи дополнительных сведений, которые пользователь хочет записать в журнал аудита с помощью хранимой sp_audit_write процедуры.
nvarchar(4000) No
audit_schema_version Всегда 1 int Да
sequence_group_id Область применения: только SQL Server

Уникальный идентификатор
varbinary(85) No
transaction_id Применимо только к SQL Server (начиная с 2016 г.)

Уникальный идентификатор для идентификации нескольких событий аудита в одной транзакции
bigint No
client_ip Область применения: База данных SQL Azure и SQL Server (начиная с 2017 г.)

Исходный IP-адрес клиентского приложения
nvarchar(128) No
application_name Область применения: База данных SQL Azure и SQL Server (начиная с 2017 г.)

Имя клиентского приложения, выполнившего инструкцию, вызвавшей событие аудита.
nvarchar(128) No
duration_milliseconds Область применения: База данных SQL Azure и Управляемый экземпляр SQL

Длительность выполнения запроса в миллисекундах
bigint No
response_rows Область применения: База данных SQL Azure и Управляемый экземпляр SQL

Число строк, возвращаемых в результирующем наборе.
bigint No
affected_rows Область применения: только база данных SQL Azure

Количество строк, затронутых инструкцией.
bigint No
connection_id Область применения: База данных SQL Azure и Управляемый экземпляр SQL

Идентификатор подключения на сервере
GUID No
data_sensitivity_information Область применения: только база данных SQL Azure

Типы сведений и метки конфиденциальности, возвращаемые аудитом запроса на основе классифицированных столбцов в базе данных. Дополнительные сведения об обнаружении и классификации данных базы данных SQL Azure
nvarchar(4000) No
host_name Имя узла подключения клиента nvarchar(128) No
session_context Сведения о контексте сеанса для подключения nvarchar(4000) No
client_tls_version Область применения: SQL Server 2022 и более поздних версий

Номер версии TLS, используемый подключением клиента
int No
client_tls_version_name Область применения: SQL Server 2022 и более поздних версий

Имя версии TLS, используемое клиентским подключением
nvarchar(128) No
database_transaction_id Идентификатор транзакции базы данных bigint No
ledger_start_sequence_number Область применения: SQL Server 2022 и более поздних версий

Номер начальной последовательности реестра для операций реестра
bigint No
external_policy_permissions_checked Разрешения внешней политики, которые были проверены во время операции nvarchar(4000) No

Примечания

Некоторые действия не заполняют значение столбца, так как это может быть неприменимо для действия.

Аудит SQL Server хранит 4000 символов данных для полей символов в записи аудита. Если значения additional_information и инструкций , возвращаемые из действия аудита, возвращают более 4000 символов, столбец sequence_number используется для записи нескольких записей в отчет аудита для одного действия аудита для записи этих данных. Применяется следующая обработка.

  • Столбец инструкции делится на 4000 символов.

  • Аудит SQL Server записывается в качестве первой строки для записи аудита с частичными данными. Все другие поля повторяются в каждой строке.

  • Значение sequence_number увеличивается.

  • Этот процесс повторяется до тех пор, пока не будут записаны все данные.

Данные можно подключить, считывая строки последовательно с помощью значения sequence_number, а также столбцов event_Time, action_id и session_id столбцов для идентификации действия.