sys.fn_xe_file_target_read_file (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance
Liest Dateien, die vom asynchronen Dateiziel für erweiterte Ereignisse erstellt wurden. Pro Zeile wird ein Ereignis im XML-Format zurückgegeben.
Das Ziel für erweiterte Ereignisse event_file
speichert die Daten, die sie in einem Binärformat empfängt, das nicht lesbar ist. Lesen Sie den Inhalt der .xel
Datei mit der sys.fn_xe_file_target_read_file
Funktion. Diese Dateien können auch aus 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. Pfad kann Wildcards enthalten und den Namen einer Datei enthalten. path is nvarchar(260) with no default. Im Kontext von Azure SQL-Datenbank ist dieser Wert eine HTTP-URL zu einer Datei in Azure Storage.
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 wurde 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 NULL
angegeben 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.
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.
initial_offset
Wird verwendet, um den letzten zuvor gelesenen Offset anzugeben und überspringt alle Ereignisse bis (einschließlich) des Offsets. Die Ereignisenumeration startet nach dem angegebenen Offset. initial_offset ist groß. Wenn NULL
als Argument angegeben wird, wird die gesamte Datei gelesen.
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 sowie Azure SQL-Datenbank. |
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
Speichern Sie .xel
Dateien in Azure SQL verwaltete Instanz oder Azure SQL-Datenbank in Azure Blob Storage. Sie können mit sys.fn_xe_file_target_read_file
aus erweiterten Ereignissitzungen lesen, die Sie selbst erstellen und in Azure Blob Storage speichern können. Beispiel: exemplarische Vorgehensweise: Erstellen einer Ereignissitzung mit einem event_file Ziel in Azure Storage.
Wenn Sie einen Wildcard- und/oder Pfad für ein lokales Dateisystem 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 Dateizielen
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 .xem
der .xel
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());
Zugehöriger Inhalt
- Dynamische Verwaltungssichten für erweiterte Ereignisse
- Katalogsichten für erweiterte Ereignisse (Transact-SQL)
- Erweiterte Ereignisübersicht
- Ziele für erweiterte Ereignisse
- Anzeigen von Ereignisdaten in SQL Server Management Studio
- Konvertieren eines vorhandenen SQL-Ablaufverfolgungsskripts in eine Sitzung für erweiterte Ereignisse
- Verwenden der system_health-Sitzung