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


sys.fn_xe_file_target_read_file (Transact-SQL)

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

Считывает файлы, созданные асинхронным целевым объектом расширенных событий. Возвращается одно событие в каждой строке в формате XML.

Целевой объект расширенных событий event_file сохраняет данные, получаемые в двоичном формате, который не является читаемым человеком. Чтение содержимого .xel файла с sys.fn_xe_file_target_read_file помощью функции. Эти файлы также можно считывать из Management Studio. Пошаговое руководство см . в кратком руководстве по расширенным событиям.

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

Синтаксис

sys.fn_xe_file_target_read_file ( path , mdpath , initial_file_name , initial_offset )

Аргументы

path

Путь к файлам для чтения. путь может содержать подстановочные знаки и включать имя файла. путьnvarchar(260) без значения по умолчанию. В контексте База данных SQL Azure это значение является HTTP-URL-адресом файла в служба хранилища Azure.

mdpath

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

В SQL Server 2012 (11.x) и более поздних версиях этот параметр не нужен. Он был сохранен для обратной совместимости для файлов журналов, созданных в предыдущих версиях SQL Server. В SQL Server 2016 (13.x) и более поздних версиях этот параметр можно указать так NULL, как .xem файлы больше не используются.

initial_file_name

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

Примечание.

initial_file_name и initial_offset являются парными аргументами. Если указать значение для любого аргумента, необходимо указать значение для другого аргумента.

initial_offset

Используется для указания последнего считанного ранее смещения и пропуска всех событий до смещения (включительно). Перечисление событий начинается после указанного смещения. initial_offset является bigint. Если NULL задан в качестве аргумента, весь файл считывается.

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

Имя столбца Тип данных Description
module_guid uniqueidentifier Идентификатор GUID модуля событий. Не допускает значения NULL.
package_guid uniqueidentifier Идентификатор GUID пакета событий. Не допускает значения NULL.
object_name nvarchar(256) Имя события. Не допускает значения NULL.
event_data nvarchar(max) Содержимое события в формате XML. Не допускает значения NULL.
file_name nvarchar(260) Имя файла, содержащего событие. Не допускает значения NULL.
file_offset bigint Смещение блока в файле, содержащем событие. Не допускает значения NULL.
timestamp_utc datetime2(7) Дата и время (часовой пояс UTC) события. Не допускает значения NULL.

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

Замечания

Чтение больших результирующих наборов путем выполнения sys.fn_xe_file_target_read_file в Management Studio может привести к ошибке. Используйте результаты в режиме файлов (в СРЕДЕ SQL Server Management Studio, CTRL+SHIFT+F) для экспорта больших результирующих наборов в удобочитаемый файл, чтобы считывать файл с другим средством.

SQL Server 2008 (10.0.x) и SQL Server 2008 R2 (10.50.x) принимают результаты трассировки, созданные в формате XEL и XEM. Расширенные события SQL Server 2012 (11.x) поддерживают только результаты трассировки в формате XEL. Рекомендуется использовать Management Studio для чтения результатов трассировки в формате XEL.

Azure SQL

В Управляемый экземпляр SQL Azure или База данных SQL Azure сохраните .xel файлы в Хранилище BLOB-объектов Azure. Вы можете использовать sys.fn_xe_file_target_read_file для чтения из сеансов расширенных событий, которые создаются и сохраняются в хранилище BLOB-объектов Azure. Например, пошаговое руководство по созданию сеанса событий с помощью целевого объекта event_file в служба хранилища Azure.

Если указать подстановочный знак и (или) путь для локальной файловой системы, вы получите сообщение об ошибке, аналогичное следующему:

Msg 40538, Level 16, State 3, Line 15
A valid URL beginning with 'https://' is required as value for any filepath specified.

Разрешения

В SQL Server 2019 (15.x) и предыдущих версиях требуется VIEW SERVER STATE разрешение на сервере.

В SQL Server 2022 (16.x) и более поздних версиях требуется VIEW SERVER PERFORMANCE STATE разрешение на сервере.

Примеры

А. Получение данных из целевых объектов файлов

Для SQL Server 2014 (12.x) и предыдущих версий следующий пример получает все строки из всех файлов, включая .xel и .xem файл. В этом примере целевые объекты и метафайлы файлов находятся в папке трассировки в папке C:\traces\ .

SELECT *
FROM sys.fn_xe_file_target_read_file('C:\traces\*.xel', 'C:\traces\metafile.xem', NULL, NULL);

В SQL Server 2016 (13.x) и более поздних версиях следующий пример извлекает события внутри всех .xel файлов в папке по умолчанию. Расположение по умолчанию находится \MSSQL\Log в папке установки экземпляра.

SELECT *
FROM sys.fn_xe_file_target_read_file('*.xel', NULL, NULL, NULL);

В SQL Server 2017 (14.x) и более поздних версиях в следующем примере извлекаются только данные из последнего дня из встроенного сеанса system_health. Сеанс system_health — это сеанс расширенных событий, включенный по умолчанию в SQL Server. Дополнительные сведения см. в разделе "Использование сеанса system_health".

SELECT *
FROM sys.fn_xe_file_target_read_file('system_health*.xel', NULL, NULL, NULL)
WHERE CAST(timestamp_utc AS DATETIME2(7)) > DATEADD(DAY, -1, GETUTCDATE());