sys.fn_get_audit_file_v2 (Transact-SQL)
Применимо к: База данных SQL Azure
Системная sys.fn_get_audit_file_v2
функция в База данных SQL Azure предназначена для получения данных журнала аудита с повышенной эффективностью по сравнению с его предшественникомsys.fn_get_audit_file
. Функция вводит фильтрацию на основе времени на уровне файлов и записей, обеспечивая значительные улучшения производительности, особенно для запросов, предназначенных для определенных диапазонов времени.
Внимание
sys.fn_get_audit_file_v2
в настоящее время поддерживается только в База данных SQL Azure.
Возвращает сведения из файла аудита, созданного аудитом сервера в База данных SQL Azure. Дополнительные сведения см. в статье Аудит 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
Указывает каталог или путь и имя файла для файла аудита, который предстоит прочитать. 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
Указывает путь и имя файла для определенного файла в наборе файлов аудита, из которого предстоит начать чтение записей аудита. initial_file_name nvarchar(260).
Аргумент initial_file_name должен содержать допустимые записи или содержать default
NULL
либо значение.
audit_record_offset
Указывает известное расположение с файлом, указанным для initial_file_name. Если этот аргумент используется, функция начинает считывать в первую запись буфера сразу после указанного смещения.
Аргумент audit_record_offset должен содержать допустимые записи или содержать default
NULL
либо значение. 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 = true0 = false |
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_name object_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 (Transact-SQL).Область применения: 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 только |
Улучшения по сравнению с sys.fn_get_audit_file
Функция sys.fn_get_audit_file_v2
обеспечивает существенное улучшение более старых sys.fn_get_audit_file путем внедрения эффективной фильтрации на основе времени как на уровне файлов, так и записей. Эта оптимизация особенно полезна для запросов, предназначенных для небольших диапазонов времени и может помочь обеспечить производительность в средах с несколькими базами данных.
Фильтрация на двух уровнях
Фильтрация на уровне файла: функция сначала фильтрует файлы на основе указанного диапазона времени, уменьшая количество файлов, которые необходимо сканировать.
Фильтрация на уровне записей. Затем применяется фильтрация в выбранных файлах для извлечения только соответствующих записей.
Улучшения в плане производительности
Улучшения производительности в основном зависят от времени отката файлов BLOB-объектов и диапазона времени запроса. Предположим, что однородное распределение записей аудита:
Снижение нагрузки: свести к минимуму количество файлов и записей для сканирования, это снижает нагрузку на систему и улучшает время отклика запроса.
Масштабируемость: помогает поддерживать производительность даже при увеличении числа баз данных, хотя чистое улучшение может быть менее заметным в средах с большим количеством баз данных.
Сведения о настройке аудита База данных SQL Azure см. в статье "Начало работы с База данных SQL аудите".
Замечания
Если аргумент file_pattern, переданный для
fn_get_audit_file_v2
ссылок на путь или файл, который не существует, или если файл не является файлом аудита,MSG_INVALID_AUDIT_FILE
возвращается сообщение об ошибке.fn_get_audit_file_v2
нельзя использовать при создании аудита с параметрами илиEXTERNAL_MONITOR
параметрами.APPLICATION_LOG
SECURITY_LOG
Разрешения
Требуется разрешение CONTROL DATABASE
.
Администраторы сервера могут получить доступ к журналам аудита всех баз данных на сервере.
Администраторы, не являющиеся серверами, могут получать доступ только к журналам аудита из текущей базы данных.
Большие двоичные объекты, которые не соответствуют приведенным выше критериям, пропускаются (список пропущенных больших двоичных объектов отображается в выходном сообщении запроса). Функция возвращает журналы только из больших двоичных объектов, для которых разрешен доступ.
Примеры
В этом примере извлекаются журналы аудита из определенного расположения Хранилище BLOB-объектов Azure, фильтрация записей между 2023-11-17T08:40:40Z
и2023-11-17T09:10:40Z
.
SELECT *
FROM sys. fn_get_audit_file_v2(
'https://yourstorageaccount.blob.core.windows.net/sqldbauditlogs/server_name/database_name/SqlDbAuditing_ServerAudit/',
DEFAULT,
DEFAULT,
'2023-11-17T08:40:40Z',
'2023-11-17T09:10:40Z')
Дополнительные сведения
Представления системного каталога:
- 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)
Transact-SQL:
- CREATE SERVER AUDIT (Transact-SQL)
- ALTER SERVER AUDIT (Transact-SQL)
- DROP SERVER AUDIT (Transact-SQL)
- CREATE SERVER AUDIT SPECIFICATION (Transact-SQL)
- СПЕЦИФИКАЦИЯ ALTER SERVER AUDIT (Transact-SQL)
- СПЕЦИФИКАЦИЯ АУДИТА DROP SERVER (Transact-SQL)
- CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)
- ALTER DATABASE AUDIT SPECIFICATION (Transact-SQL)
- DROP DATABASE AUDIT SPECIFICATION (Transact-SQL)
- ALTER AUTHORIZATION (Transact-SQL)