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

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

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

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

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

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

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

Определяемый пользователем идентификатор события, переданный в качестве аргумента sp_audit_writeNULL для системных событий (по умолчанию) и ненулевого значения для определяемого пользователем события. Дополнительные сведения см. в разделе sp_audit_write (Transact-SQL).
smallint Нет
информация_определенная_пользователем Область применения: SQL Server 2012 (11.x) и более поздних версий, База данных SQL Azure и Управляемый экземпляр 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 Область применения: База данных SQL Azure и SQL Server (начиная с 2017 г.)

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

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

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

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

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

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

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

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

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

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

Примечания

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

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

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

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

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

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

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