sys.fn_xe_file_target_read_file (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure 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 wild Karte 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. Ab SQL Server 2016 (13.x) kann dieser Parameter als NULL, da .xem Dateien nicht mehr verwendet werden, angegeben 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. Exemplarische Vorgehensweise finden Sie unter Ereignisdatei-Zielcode für erweiterte Ereignisse in Azure SQL-Datenbank und Azure SQL Managed Instance.

Wenn Sie wild Karte und/oder einen 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

Erfordert die VIEW SERVER STATE-Berechtigung auf dem Server.

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 timestamp_utc > DATEADD(DAY, -1, GETUTCDATE());