Freigeben über


sys.fn_xe_file_target_read_file (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzSQL-Datenbank in Microsoft Fabric

Liest die ereignisprotokoll-XEL-Dateien, die vom Ziel für erweiterte Ereignisse event_file erstellt wurden. Jede Zeile im Resultset stellt ein Ereignis dar. Ereignisdaten werden im XML-Format zurückgegeben.

XEL-Dateien können auch von SQL Server Management Studio gelesen werden. Eine exemplarische Vorgehensweise finden Sie unter "Schnellstart: Erweiterte Ereignisse".

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

path

Der Pfad zu den zu lesenden Dateien. Path ist nvarchar(260) ohne Standard.

  • Bei Verwendung mit Dateien im lokalen Dateisystem muss der Pfad den Namen einer Ereignissitzungsprotokolldatei enthalten. Der Dateiname kann als Wildcard zum Lesen von Daten aus mehreren Dateien enthalten * .

  • Bei Verwendung mit Blobs in einem Azure Storage-Container ist der Pfad eine HTTP-URL, die durch die Verkettung von zwei Teilen erstellt wird:

    1. Der Pfad zu einem Azure Storage-Speichercontainer, gefolgt von einem Schrägstrich (/).

    2. Ein allgemeines Präfix für die Namen von Blobs im Container, die gelesen werden sollen. Verwenden Sie den vollständigen Namen des Blobs, um ein einzelnes Blob zu lesen.

    Die Verwendung https://<storage-account-name>.blob.core.windows.net/container-name>/xe_session als Pfad ruft z. B. Daten aus allen Blobs ab, bei deren Namen beginnen xe_session, und zwar unabhängig vom Rest des Blobnamens einschließlich der Erweiterung. Wildcards können nicht angegeben werden.

mdpath

Der Pfad zur Metadatendatei, die der durch das Pfadargument angegebenen Datei oder Dateien entspricht. mdpath ist nvarchar(260) ohne Standard.

In SQL Server 2012 (11.x) und höheren Versionen benötigen Sie diesen Parameter nicht. Sie wird aus Gründen der Abwärtskompatibilität für Protokolldateien beibehalten, die in früheren Versionen von SQL Server generiert wurden. In SQL Server 2016 (13.x) und höheren Versionen kann dieser Parameter als NULLangegeben werden, da .xem Dateien nicht mehr verwendet werden.

initial_file_name

Die erste Datei, die aus dem Pfad gelesen werden soll. initial_file_name ist nvarchar(260) ohne Standard. Wenn NULL als Argument angegeben wird, werden alle dateien, die im Pfad gefunden wurden, gelesen.

Der Dateiname muss ein Wert sein, der im Resultset eines sys.fn_xe_file_target_read_file Funktionsaufrufs mit demselben Pfad zurückgegeben wird.

initial_offset

Wird verwendet, um den zuletzt gelesenen Offset anzugeben. Überspringt alle Ereignisse bis zum Offset (einschließlich). Die Ereignisenumeration startet nach dem angegebenen Offset. initial_offset ist groß. Wenn NULL als Argument angegeben wird, wird die gesamte Datei gelesen.

Hinweis

initial_file_name und initial_offset sind gekoppelte Argumente. Wenn Sie einen Wert für beide Argumente angeben, müssen Sie einen Wert für das andere Argument angeben.

Zurückgegebene Tabelle

Spaltenname Datentyp Beschreibung
module_guid uniqueidentifier Die Ereignismodul-GUID. Lässt keine NULL-Werte zu.
package_guid uniqueidentifier Die Ereignispaket-GUID. Lässt keine NULL-Werte zu.
object_name nvarchar(256) Der Name des Ereignisses. Lässt keine NULL-Werte zu.
event_data nvarchar(max) Der Ereignisinhalt im XML-Format. Lässt keine NULL-Werte zu.
file_name nvarchar(260) Der Name der Datei, die das Ereignis enthält. Lässt keine NULL-Werte zu.
file_offset bigint Der Offset des Blocks in der Datei, der das Ereignis enthält. Lässt keine NULL-Werte zu.
timestamp_utc datetime2(7) Datum und Uhrzeit (UTC-Zeitzone) des Ereignisses. Lässt keine NULL-Werte zu.

Gilt für: SQL Server 2017 (14.x) und höhere Versionen, Azure SQL-Datenbank und azure SQL Managed Instance.

Hinweise

Das Lesen großer Resultsets durch Ausführen sys.fn_xe_file_target_read_file in Management Studio kann zu einem Fehler führen. Verwenden Sie den Dateimodus "Ergebnisse" (in SQL Server Management Studio, STRG+UMSCHALT+F), um große Resultsets in eine lesbare Datei zu exportieren, um die Datei stattdessen mit einem anderen Tool zu lesen.

SQL Server 2008 (10.0.x) und SQL Server 2008 R2 (10.50.x) akzeptieren Ablaufverfolgungsergebnisse, die im XEL- und XEM-Format generiert wurden. SQL Server 2012 (11.x) Erweiterte Ereignisse unterstützen nur Ablaufverfolgungsergebnisse im XEL-Format. Es wird empfohlen, dass Sie Management Studio verwenden, um Ablaufverfolgungsergebnisse im XEL-Format zu lesen.

Azure SQL

In azure SQL Managed Instance oder Azure SQL Database werden die vom event_file Ziel erstellten Dateien immer als Blobs in einem Azure Storage-Container gespeichert.

Sie können sys.fn_xe_file_target_read_file Daten aus diesen Blobs lesen, wenn eine Anmeldeinformation, die den Zugriff auf den Azure Storage-Container zulässt, vorhanden ist. Eine exemplarische Vorgehensweise finden Sie unter Erstellen einer Ereignissitzung mit einem event_file Ziel in Azure Storage.

Wenn Sie einen lokalen Dateisystempfad angeben, erhalten Sie eine Fehlermeldung wie:

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

Berechtigungen

In SQL Server 2019 (15.x) und früheren Versionen ist die Berechtigung auf dem Server erforderlich VIEW SERVER STATE .

In SQL Server 2022 (16.x) und höheren Versionen ist die Berechtigung auf dem Server erforderlich VIEW SERVER PERFORMANCE STATE .

Beispiele

A. Abrufen von Daten aus Dateien im lokalen Dateisystem

Für SQL Server 2014 (12.x) und frühere Versionen ruft das folgende Beispiel alle Zeilen aus allen Dateien ab, einschließlich der Datei und .xel der .xem Datei. In diesem Beispiel befinden sich die Dateiziele und Metadateien im Ablaufverfolgungsordner im C:\traces\ Ordner.

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

In SQL Server 2016 (13.x) und höheren Versionen ruft das folgende Beispiel Ereignisse innerhalb aller .xel Dateien im Standardordner ab. Der Standardspeicherort befindet sich \MSSQL\Log im Installationsordner der Instanz.

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

In SQL Server 2017 (14.x) und höheren Versionen ruft das folgende Beispiel nur Daten vom letzten Tag aus der integrierten system_health-Sitzung ab. Die system_health Sitzung ist eine erweiterte Ereignissitzung, die standardmäßig in SQL Server enthalten ist. Weitere Informationen finden Sie unter Verwenden der system_health-Sitzung.

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());

B. Abrufen von Daten aus Blobs in einem Azure Storage-Container

Lesen von Daten aus allen Blobs im Container mit Namen beginnend mit xe_session_.

SELECT *
FROM sys.fn_xe_file_target_read_file(
    'https://<storage-account-name>.blob.core.windows.net/<container-name>/xe_session_',
    NULL,
    NULL,
    NULL
);

Lesen von Daten aus dem xe_session_0_133614763336380000.xel BLOB.

SELECT *
FROM sys.fn_xe_file_target_read_file(
    'https://<storage-account-name>.blob.core.windows.net/<container-name>/xe_session_0_133614763336380000.xel',
    NULL,
    NULL,
    NULL
);

Lesen von Daten aus dem xe_session_0_133614763336380000.xel Blob beginnend mit Offset 33280.

SELECT *
FROM sys.fn_xe_file_target_read_file(
    'https://<storage-account-name>.blob.core.windows.net/<container-name>/xe_session_',
    NULL,
    'https://<storage-account-name>.blob.core.windows.net/<container-name>/xe_session_0_133614763336380000.xel',
    33280
);