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


sys.fn_get_audit_file_v2 (Transact-SQL)

Относится к:Azure SQL DatabaseWarehouse в Microsoft FabricSQL база данных в Microsoft Fabric

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

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

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

Синтаксис

fn_get_audit_file_v2 ( file_pattern
    , { default | initial_file_name | NULL }
    , { default | audit_record_offset | NULL }
    , { default | start time | NULL }
    , { default | end time | NULL } )

Аргументы

file_pattern

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

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

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

Этот аргумент используется для указания URL-адреса BLOB-объектов (включая конечную точку хранилища и контейнер). Хотя он не поддерживает подстановочный знак звездочки, можно использовать префикс имени частичного файла (blob) (вместо полного имени большого двоичного объекта) для сбора нескольких файлов (BLOB-объектов), которые начинаются с этого префикса. Например:

  • <Storage_endpoint>/<Container>/<ServerName>/<DatabaseName>/ — собирает все файлы аудита (BLOB-объекты) для конкретной базы данных.

  • <Storage_endpoint>/<Container>/<ServerName>/<DatabaseName>/<AuditName>/<CreationDate>/<FileName>.xel — собирает определенный файл аудита (BLOB-объект).

initial_file_name

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

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

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

audit_record_offset

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

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

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

start_time

Время начала фильтрации журналов. Записи до этого времени исключены.

end_time

Время окончания фильтрации журналов. Записи после этого времени исключаются.

Таблица возвращенной информации

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

Имя столбца Тип Описание
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 = верно
0 = ложь
session_id smallint Идентификатор сеанса, в котором произошло событие. Не допускает значения NULL.
server_principal_id int Идентификатор контекста имени входа, в котором выполнено действие. Не допускает значения NULL.
database_principal_id int Идентификатор контекста пользователя базы данных, в котором выполнено действие. Не допускает значения NULL. Возвращается 0 , если это не применяется. Например, операция сервера.
target_server_principal_id int Субъект сервера, на который GRANT/DENY/REVOKE выполняется операция. Не допускает значения NULL. Возвращается 0 , если применимо.
target_database_principal_id int Субъект GRANT/DENY/REVOKE базы данных выполняет операцию. Не допускает значения 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 Идентификатор безопасности текущего имени входа. Допускает значение 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.
user_defined_event_id smallint Определяемый пользователем идентификатор события, переданный в качестве аргумента sp_audit_write. NULL для системных событий (по умолчанию) и ненулевых для определяемого пользователем события. Дополнительные сведения см. в разделе sp_audit_write (Transact-SQL).
user_defined_information nvarchar(4000) Используется для записи дополнительных сведений, которые пользователь хочет записать в журнал аудита с помощью хранимой sp_audit_write процедуры.
audit_schema_version int Всегда1.
sequence_group_id varbinary Уникальный идентификатор.<
transaction_id bigint Уникальный идентификатор для идентификации нескольких событий аудита в одной транзакции.
client_ip nvarchar(128) Исходный IP-адрес клиентского приложения.
application_name nvarchar(128) Имя клиентского приложения, которое выполнило инструкцию, которая вызвала событие аудита.
duration_milliseconds bigint Длительность выполнения запроса в миллисекундах.
response_rows bigint Количество возвращаемых строк в наборе результатов.<
affected_rows bigint Количество строк, затронутых выполненной инструкцией.
connection_id uniqueidentifier Идентификатор подключения на сервере.
data_sensitivity_information nvarchar(4000) Типы сведений и метки конфиденциальности, возвращаемые запросом аудита на основе классифицированных столбцов в базе данных. Дополнительные сведения об обнаружении и классификации данных База данных 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 Порядковый номер операции в транзакции, при выполнении которой была создана версия строки.
external_policy_permissions_checked nvarchar(4000) Сведения, связанные с проверкой разрешений внешней авторизации, при создании события аудита и оценке политик внешней авторизации Purview.
obo_middle_tier_app_id varchar(120) Идентификатор приложения среднего уровня, которое подключается с помощью доступа от имени (OBO). Допускает значение NULL. Возвращает, NULL если запрос не выполняется с помощью доступа OBO.
is_local_secondary_replica bit True Значение , если запись аудита возникает из локальной вторичной реплики только для чтения, False в противном случае.

Улучшения по сравнению с sys.fn_get_audit_file

Функция sys.fn_get_audit_file_v2 обеспечивает существенное улучшение более старых sys.fn_get_audit_file путем внедрения эффективной фильтрации на основе времени как на уровне файлов, так и записей. Эта оптимизация особенно полезна для запросов, предназначенных для небольших диапазонов времени и может помочь обеспечить производительность в средах с несколькими базами данных.

Фильтрация на двух уровнях

Фильтрация на уровне файла: функция сначала фильтрует файлы на основе указанного диапазона времени, уменьшая количество файлов, которые необходимо сканировать.

Фильтрация на уровне записей. Затем применяется фильтрация в выбранных файлах для извлечения только соответствующих записей.

Улучшения в плане производительности

Улучшения производительности в основном зависят от времени отката файлов BLOB-объектов и диапазона времени запроса. Предположим, что однородное распределение записей аудита:

  • Снижение нагрузки: свести к минимуму количество файлов и записей для сканирования, это снижает нагрузку на систему и улучшает время отклика запроса.

  • Масштабируемость: помогает поддерживать производительность даже при увеличении числа баз данных, хотя чистое улучшение может быть менее заметным в средах с большим количеством баз данных.

Замечания

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

Функцию fn_get_audit_file_v2 нельзя использовать, когда аудит создаётся с APPLICATION_LOGпомощью опций , SECURITY_LOG, или EXTERNAL_MONITOR .

В настоящее время в хранилище данных Fabric вы не можете получить доступ к отдельным файлам, только к папке аудита. Следующие аргументы не поддерживаются для SQL-аудита на складском элементе: file_pattern, initial_file_name, audit_record_offset.

Разрешения

Разрешения необходимы в Azure SQL Database

Требуется разрешение CONTROL DATABASE.

  • Администраторы сервера могут получить доступ к журналам аудита всех баз данных на сервере.

  • Администраторы, не являющиеся серверами, могут получать доступ только к журналам аудита из текущей базы данных.

  • Большие двоичные объекты, которые не соответствуют приведенным выше критериям, пропускаются (список пропущенных больших двоичных объектов отображается в выходном сообщении запроса). Функция возвращает журналы только из больших двоичных объектов, для которых разрешен доступ.

Разрешения, необходимые в базе данных Fabric SQL

Для управления аудитом с использованием ролей Fabric workspace пользователи должны иметь членство в роли Fabric workspace Contributor или иметь более высокие права. Чтобы управлять аудитом с разрешениями SQL, выполните следующие действия.

  • Чтобы настроить аудит базы данных, пользователи должны иметь разрешение ALTER ANY DATABASE AUDIT.
  • Чтобы просмотреть журналы аудита с помощью T-SQL, пользователи должны иметь разрешение VIEW DATABASE SECURITY AUDIT.

Для получения дополнительной информации см. раздел Аудит в базе данных Fabric SQL.

Необходимые разрешения в хранилище данных Fabric

Пользователи должны иметь разрешение на предмет Audit Fabric. Дополнительные сведения см. в разделе Разрешения.

Примеры

А. Просмотр журналов аудита SQL для Azure SQL Database

В этом примере извлекаются журналы аудита из определенного расположения Хранилище BLOB-объектов Azure, фильтрация записей между 2023-11-17T08:40:40Z и2023-11-17T09:10:40Z.

SELECT *
FROM sys.fn_get_audit_file_v2(
    'https://<storage_account>.blob.core.windows.net/sqldbauditlogs/server_name/database_name/SqlDbAuditing_ServerAudit/',
    DEFAULT,
    DEFAULT,
    '2023-11-17T08:40:40Z',
    '2023-11-17T09:10:40Z')

В. Просмотр журналов аудита SQL для хранилища данных Fabric

В этом примере получаются журналы аудита из папки OneLake, выровнянные с текущим рабочим пространством и складом, фильтруя записи между 2023-11-17T08:40:40Z и 2023-11-17T09:10:40Z.

В портале Fabric получите свои workspaceID и warehouseID:

  • <workspaceID>: Посетите своё рабочее пространство в портале Fabric. Найдите GUID рабочего пространства в URL после раздела /groups/ или запустив SELECT @@SERVERNAME его в существующем складе. Если ваш /groups/ URL следует /me/, вы используете стандартное рабочее пространство, и в настоящее время SQL Audit for Fabric Data Warehouse не поддерживается в стандартном рабочем пространстве.
  • <warehouseID>: Посетите свой склад в портале Fabric. Найдите ID склада в URL после раздела /warehouses/ .
SELECT *
FROM sys. fn_get_audit_file_v2(
    'https://onelake.blob.fabric.microsoft.com/{workspaceId}/{warehouseId}/Audit/sqldbauditlogs/',
    DEFAULT,
    DEFAULT,
    '2023-11-17T08:40:40Z',
    '2023-11-17T09:10:40Z')

С. Просмотр журналов аудита SQL для баз данных SQL в Microsoft Fabric

В этом примере получаются журналы аудита из OneLake в Microsoft Fabric, между 2025-11-17T08:40:40Z и 2025-11-17T09:10:40Z.

В следующем скрипте необходимо указать идентификатор рабочего пространства Microsoft Fabric и идентификатор базы данных. Оба варианта можно найти в URL портала Fabric. Например: https://fabric.microsoft.com/groups/<fabric workspace id>/sqldatabases/<fabric sql database id>. Первая строка уникального идентификатора в URL — это Fabric workspace ID, а вторая уникальная строка идентификатора — SQL ID базы данных.

  • Замените <fabric_workspace_id> идентификатором рабочего пространства Fabric. Идентификатор рабочей области можно легко найти в URL-адресе, это уникальная строка внутри двух / символов после /groups/ в окне браузера.
  • Замените <fabric sql database id> на SQL базу данных в идентификаторе базы данных Fabric. Идентификатор элемента базы данных можно легко найти в URL-адресе, это уникальная строка внутри двух / символов после /sqldatabases/ в окне браузера.
SELECT *
FROM sys.fn_get_audit_file_v2(
    'https://onelake.blob.fabric.microsoft.com/<fabric workspace id>/<fabric sql database id>/Audit/sqldbauditlogs/',
    DEFAULT,
    DEFAULT,
    '2025-11-17T08:40:40Z',
    '2025-11-17T09:10:40Z')

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

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

Transact-SQL: