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


sys.fn_get_audit_file (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics

Возвращает сведения из файла аудита, созданного аудитом сервера в SQL Server. Дополнительные сведения см. в статье Аудит SQL Server (ядро СУБД).

Примечание.

Для База данных SQL Azure вместо этого рекомендуется использовать sys.fn_get_audit_file_v2. sys.fn_get_audit_file_v2 предоставляет фильтрацию на основе времени как на уровне файлов, так и записей, обеспечивая значительные улучшения производительности, особенно для запросов, предназначенных для определенных диапазонов времени.

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

file_pattern

Указывает каталог или путь и имя файла для файла аудита, который предстоит прочитать. Тип nvarchar (260).

Передача пути без шаблона имени файла приводит к ошибке.

Этот аргумент должен содержать как путь (букву диска или сетевой ресурс), так и имя файла, которое может включать символ-шаблон. Для сбора нескольких файлов из набора файлов аудита можно использовать одну звездочку (*). Например:

  • \<path>\* — сбор всех файлов аудита в указанном расположении.

  • <path>\LoginsAudit_{GUID}* — соберите все файлы аудита с указанным именем и парой GUID.

  • <path>\LoginsAudit_{GUID}_00_29384.sqlaudit — сбор определенного файла аудита.

initial_file_name

Указывает путь и имя файла для определенного файла в наборе файлов аудита, из которого предстоит начать чтение записей аудита. Тип nvarchar (260).

Аргумент initial_file_name должен содержать допустимые записи или содержать default NULL либо значение.

audit_record_offset

Указывает известное расположение с файлом, указанным для initial_file_name. Если этот аргумент используется, функция начинает считывать в первую запись буфера сразу после указанного смещения.

Аргумент audit_record_offset должен содержать допустимые записи или содержать default NULL либо значение. Тип bigint.

Возвращаемые таблицы

В следующей таблице описано содержимое файла аудита, которое может возвращаться этой функцией.

Имя столбца Тип Описание
event_time datetime2 Дата и время срабатывания действия, доступного для аудита. Не допускает значения NULL.
sequence_number int Отслеживает последовательность записей в одной записи аудита, слишком большой, чтобы уместиться в буфере записи для аудитов. Не допускает значения NULL.
action_id varchar(4) Идентификатор действия. Не допускает значения NULL.
succeeded bit Показывает, было ли успешным действие, запустившее событие. Не допускает значения NULL. Для всех событий, отличных от событий имени входа, при этом формируются только сообщения о том, была ли проверка разрешения выполнена успешно или окончилась неудачей, а не сообщения о самой операции.

1 = успех
0 = сбой
permission_bitmask varbinary(16) В некоторых действиях эта битовая маска — это разрешения, которые были предоставлены, отклонены или отменены.
is_column_permission bit Флаг, обозначающий разрешение уровня столбца. Не допускает значения NULL. Возвращает значение 0 , когда permission_bitmask = 0значение .

1 = true
0 = false
session_id smallint Идентификатор сеанса, в котором произошло событие. Не допускает значения NULL.
server_principal_id int Идентификатор контекста имени входа, в котором выполнено действие. Не допускает значения NULL.
database_principal_id int Идентификатор контекста пользователя базы данных, в котором выполнено действие. Не допускает значения NULL. Возвращается 0 , если это не применяется. Например, операция сервера.
target_server_principal_id int Субъект сервера, на который GRANT//DENYREVOKE выполняется операция. Не допускает значения NULL. Возвращается 0 , если применимо.
target_database_principal_id int Субъект GRANT//DENYREVOKE базы данных выполняет операцию. Не допускает значения NULL. Возвращается 0 , если применимо.
object_id int Идентификатор сущности, в которой произошел аудит, который включает следующие объекты:

— объекты сервера
-Баз данных
— объекты базы данных
— объекты схемы

Не допускает значения NULL. Возвращает, 0 является ли сущность самой серверной или если аудит не выполняется на уровне объекта. Например, проверка подлинности.
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 Идентификатор безопасности целевого имени входа. Допускает значение NULL. Возвращается NULL , если применимо.
target_database_principal_name sysname Целевой пользователь действия. Допускает значение NULL. Возвращается NULL , если применимо.
server_instance_name sysname Имя экземпляра сервера, где проводился аудит. Используется стандартный server\instance формат.
database_name sysname Контекст базы данных, в котором выполнялось действие. Допускает значение NULL. Возвращается NULL для аудита, происходящих на уровне сервера.
schema_name sysname Контекст схемы, в котором выполнялось действие. Допускает значение NULL. Возвращает данные NULL аудита, происходящие за пределами схемы.
object_name sysname Имя сущности, в которой произошел аудит, которая включает следующие объекты:

— объекты сервера
-Баз данных
— объекты базы данных
— объекты схемы

Допускает значение NULL. Возвращает, NULL является ли сущность самой серверной или если аудит не выполняется на уровне объекта. Например, проверка подлинности.
statement nvarchar(4000) Инструкция Transact-SQL, если она существует. Допускает значение NULL. Возвращается NULL , если применимо.
additional_information nvarchar(4000) Уникальные сведения, применимые только к одиночному событию, возвращаются в формате XML. Некоторые действия, доступные для аудита, содержат такие сведения.

Один уровень стека T-SQL отображается в формате XML для действий, с которыми связан стек T-SQL. Формат XML: <tsql_stack><frame nest_level = '%u' database_name = '%.*s' schema_name = '%.*s' object_name = '%.*s' /></tsql_stack>

frame nest_level указывает текущий уровень вложения кадра. Имя модуля представлено в трех частях (database_nameиschema_nameobject_name). Имя модуля анализируется для обхода недопустимых XML-символов, таких как <, >, /. _x Они сбежали как _xHHHH_. Он HHHH обозначает шестнадцатеричный шестнадцатеричный код UCS-2 для символа. Допускает значение NULL. Возвращает, NULL если в событии нет дополнительных сведений.
file_name varchar(260) Путь и имя файла журнала аудита, из которого получена запись. Не допускает значения NULL.
audit_file_offset bigint Смещение буфера в файле, который содержит запись аудита. Не допускает значения NULL.

Область применения: только SQL Server
user_defined_event_id smallint Определяемый пользователем идентификатор события, переданный в качестве аргумента sp_audit_write. NULL для системных событий (по умолчанию) и ненулевых для определяемого пользователем события. Дополнительные сведения см. в sp_audit_write.

Область применения: SQL Server 2012 (11.x) и более поздних версий, База данных SQL Azure и Управляемый экземпляр SQL
user_defined_information nvarchar(4000) Используется для записи дополнительных сведений, которые пользователь хочет записать в журнал аудита с помощью хранимой sp_audit_write процедуры.

Область применения: SQL Server 2012 (11.x) и более поздних версий, База данных SQL Azure и Управляемый экземпляр SQL
audit_schema_version int Всегда1.
sequence_group_id varbinary Уникальный идентификатор.

Область применения: SQL Server 2016 (13.x) и более поздних версий
transaction_id bigint Уникальный идентификатор для идентификации нескольких событий аудита в одной транзакции.

Область применения: SQL Server 2016 (13.x) и более поздних версий
client_ip nvarchar(128) Исходный IP-адрес клиентского приложения.

Область применения: SQL Server 2017 (14.x) и более поздних версий и База данных SQL Azure
application_name nvarchar(128) Имя клиентского приложения, которое выполнило инструкцию, которая вызвала событие аудита.

Область применения: SQL Server 2017 (14.x) и более поздних версий и База данных SQL Azure
duration_milliseconds bigint Длительность выполнения запроса в миллисекундах.

Применимо к: База данных SQL Azure и Управляемый экземпляр SQL
response_rows bigint Число строк, возвращаемых в результирующем наборе.

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

Применимо только к: База данных SQL Azure только
connection_id uniqueidentifier Идентификатор подключения на сервере.

Применимо к: База данных SQL Azure и Управляемый экземпляр SQL
data_sensitivity_information nvarchar(4000) Типы сведений и метки конфиденциальности, возвращаемые запросом аудита на основе классифицированных столбцов в базе данных. Дополнительные сведения об обнаружении и классификации данных База данных SQL Azure.

Применимо только к: База данных SQL Azure только
host_name nvarchar(128) Имя узла клиентского компьютера.
session_context nvarchar(4000) Пары "ключ-значение", которые являются частью текущего контекста сеанса.
client_tls_version bigint Минимальная версия TLS, поддерживаемая клиентом.
client_tls_version_name nvarchar(128) Минимальная версия TLS, поддерживаемая клиентом.
database_transaction_id bigint Идентификатор транзакции текущей транзакции в текущем сеансе.
ledger_start_sequence_number bigint Порядковый номер операции в транзакции, при выполнении которой была создана версия строки.

Применимо только к: База данных SQL Azure только
external_policy_permissions_checked nvarchar(4000) Сведения, связанные с проверкой разрешений внешней авторизации, при создании события аудита и оценке политик внешней авторизации Purview.

Применимо только к: База данных SQL Azure только
obo_middle_tier_app_id varchar(120) Идентификатор приложения среднего уровня, подключающегося к База данных SQL Azure с помощью доступа от имени (OBO). Допускает значение NULL. Возвращает, NULL если запрос не выполняется с помощью доступа OBO.

Применимо только к: База данных SQL Azure только
is_local_secondary_replica bit True Значение , если запись аудита возникает из локальной вторичной реплики только для чтения, False в противном случае.

Применимо только к: База данных SQL Azure только

Замечания

  • Если аргумент file_pattern, переданный для fn_get_audit_file ссылок на путь или файл, который не существует, или если файл не является файлом аудита, MSG_INVALID_AUDIT_FILE возвращается сообщение об ошибке.

  • fn_get_audit_fileнельзя использовать при создании аудита с параметрами или EXTERNAL_MONITOR параметрами.APPLICATION_LOGSECURITY_LOG

Разрешения

ДЛЯ SQL Server 2019 (15.x) и более ранних версий требуется CONTROL SERVER разрешение на сервере.

ДЛЯ SQL Server 2022 (16.x) и более поздних версий требуется VIEW SERVER SECURITY AUDIT разрешение на сервере.

Примеры

В следующем примере выполняется чтение из файла, который имеет имя \\serverName\Audit\HIPAA_AUDIT.sqlaudit.

SELECT *
FROM sys.fn_get_audit_file(
    '\\serverName\Audit\HIPAA_AUDIT.sqlaudit',
    DEFAULT,
    DEFAULT
);
GO

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

Ограничения

Выбор строк в sys.fn_get_audit_file списке "Создание таблицы как выбор" (CTAS) или INSERT INTO ограничение при запуске в Azure Synapse Analytics. Несмотря на успешное завершение запроса и отсутствие сообщений об ошибках, в таблице нет строк, созданных с помощью CTAS или INSERT INTO.

Дополнительные сведения

Представления системного каталога:

Transact-SQL: