Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Leest het gebeurtenislogboek XEL-bestanden die zijn gemaakt door het doel uitgebreide gebeurtenissen event_file . Elke rij in de resultatenset vertegenwoordigt een gebeurtenis. Gebeurtenisgegevens worden geretourneerd in XML-indeling.
XEL-bestanden kunnen ook worden gelezen door SQL Server Management Studio. Zie quickstart: Uitgebreide gebeurtenissen voor een overzicht.
Transact-SQL syntaxis-conventies
Syntaxis
sys.fn_xe_file_target_read_file ( path , mdpath , initial_file_name , initial_offset )
Arguments
pad
Het pad naar de bestanden die moeten worden gelezen. pad is nvarchar(260) zonder standaardwaarde.
Wanneer het pad wordt gebruikt met bestanden in het lokale bestandssysteem, moet het pad de naam van een gebeurtenissessielogboekbestand bevatten. De bestandsnaam kan als jokerteken bevatten
*om gegevens uit meerdere bestanden te lezen.Bij gebruik met blobs in een Azure Storage-container is het pad een HTTP-URL die is samengesteld door de samenvoeging van twee delen:
Het pad naar een Azure Storage-opslagcontainer, gevolgd door een slash (
/).Een gemeenschappelijk voorvoegsel voor de namen van blobs in de container die moeten worden gelezen. Als u één blob wilt lezen, gebruikt u de volledige naam van de blob.
Als u bijvoorbeeld als pad gebruikt,
https://<storage-account-name>.blob.core.windows.net/container-name>/xe_sessionworden gegevens opgehaald uit alle blobs met namen die beginnen metxe_session, en ongeacht de rest van de blobnaam, inclusief de extensie. Jokertekens kunnen niet worden opgegeven.
mdpath
Het pad naar het metagegevensbestand dat overeenkomt met het bestand of de bestanden die zijn opgegeven door het padargument. mdpath is nvarchar(260) zonder standaardinstelling.
In SQL Server 2012 (11.x) en latere versies hebt u deze parameter niet nodig. Het wordt bewaard voor achterwaartse compatibiliteit, voor logboekbestanden die zijn gegenereerd in eerdere versies van SQL Server. In SQL Server 2016 (13.x) en latere versies kan deze parameter worden opgegeven als NULL, omdat .xem bestanden niet meer worden gebruikt.
initial_file_name
Het eerste bestand dat van het pad moet worden gelezen.
initial_file_name is nvarchar(260) zonder standaardwaarde. Als NULL dit argument is opgegeven, worden alle bestanden in het pad gelezen.
De bestandsnaam moet een waarde zijn die wordt geretourneerd in de resultatenset van een sys.fn_xe_file_target_read_file functie-aanroep met hetzelfde pad.
initial_offset
Wordt gebruikt voor het opgeven van de laatste offset die eerder is gelezen. Slaat alle gebeurtenissen over tot aan de offset (inclusief). Gebeurtenisumeratie wordt gestart na de opgegeven offset.
initial_offset is bigint. Als NULL dit argument is opgegeven, wordt het hele bestand gelezen.
Opmerking
initial_file_name en initial_offset zijn gekoppelde argumenten. Als u een waarde opgeeft voor een van beide argumenten, moet u een waarde opgeven voor het andere argument.
Tabel geretourneerd
| Kolomnaam | Gegevenstype | Description |
|---|---|---|
module_guid |
uniqueidentifier- | De GUID van de gebeurtenismodule. Niet nullable. |
package_guid |
uniqueidentifier- | De GUID van het gebeurtenispakket. Niet nullable. |
object_name |
nvarchar(256) | De naam van de gebeurtenis. Niet nullable. |
event_data |
nvarchar(max) | De inhoud van de gebeurtenis, in XML-indeling. Niet nullable. |
file_name |
nvarchar(260) | De naam van het bestand dat de gebeurtenis bevat. Niet nullable. |
file_offset |
bigint | De verschuiving van het blok in het bestand dat de gebeurtenis bevat. Niet nullable. |
timestamp_utc |
datetime2(7) | De datum en tijd (UTC-tijdzone) van de gebeurtenis. Niet nullable. Van toepassing op: SQL Server 2017 (14.x) en latere versies, Azure SQL Database en Azure SQL Managed Instance. |
Opmerkingen
Het lezen van grote resultatensets door in Management Studio uit te sys.fn_xe_file_target_read_file voeren, kan leiden tot een fout. Gebruik de modus Resultaten naar bestand (in SQL Server Management Studio, Ctrl+Shift+F) om grote resultatensets te exporteren naar een bestand dat door mensen kan worden gelezen, om het bestand met een ander hulpprogramma te lezen.
SQL Server 2008 (10.0.x) en SQL Server 2008 R2 (10.50.x) accepteren traceringsresultaten die zijn gegenereerd in XEL- en XEM-indeling. Uitgebreide gebeurtenissen van SQL Server 2012 (11.x) ondersteunen alleen traceringsresultaten in XEL-indeling. U wordt aangeraden Management Studio te gebruiken om traceringsresultaten te lezen in XEL-indeling.
Azure SQL
In Azure SQL Managed Instance of Azure SQL Database worden de bestanden die door het event_file doel zijn gemaakt, altijd opgeslagen als blobs in een Azure Storage-container.
U kunt sys.fn_xe_file_target_read_file gegevens uit deze blobs lezen als er een referentie bestaat die toegang tot de Azure Storage-container toestaat. Raadpleeg voor een overzicht een gebeurtenissessie maken met een event_file doel in Azure Storage.
Als u een lokaal bestandssysteempad opgeeft, wordt er een foutbericht weergegeven dat vergelijkbaar is met:
Msg 40538, Level 16, State 3, Line 15
A valid URL beginning with 'https://' is required as value for any filepath specified.
Permissions
Voor SQL Server 2019 (15.x) en eerdere versies is een machtiging op de server vereist VIEW SERVER STATE .
Voor SQL Server 2022 (16.x) en latere versies is een machtiging op de server vereist VIEW SERVER PERFORMANCE STATE .
Voorbeelden
Eén. Gegevens ophalen uit bestanden in het lokale bestandssysteem
Voor SQL Server 2014 (12.x) en eerdere versies worden in het volgende voorbeeld alle rijen uit alle bestanden opgehaald, inclusief zowel het bestand als het .xel.xem bestand. In dit voorbeeld bevinden de bestandsdoelen en metabestanden zich in de traceringsmap in de C:\traces\ map.
SELECT *
FROM sys.fn_xe_file_target_read_file('C:\traces\*.xel', 'C:\traces\metafile.xem', NULL, NULL);
In SQL Server 2016 (13.x) en latere versies worden in het volgende voorbeeld gebeurtenissen opgehaald in alle .xel bestanden in de standaardmap. De standaardlocatie bevindt zich \MSSQL\Log in de installatiemap van het exemplaar.
SELECT *
FROM sys.fn_xe_file_target_read_file('*.xel', NULL, NULL, NULL);
In SQL Server 2017 (14.x) en latere versies worden in het volgende voorbeeld alleen gegevens opgehaald van de laatste dag, van de ingebouwde system_health sessie. De system_health-sessie is een sessie met uitgebreide gebeurtenissen die standaard is opgenomen in SQL Server. Zie De system_health-sessie gebruiken voor meer informatie.
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. Gegevens ophalen uit blobs in een Azure Storage-container
Gegevens uit alle blobs in de container lezen met namen die beginnen met 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
);
Gegevens uit de xe_session_0_133614763336380000.xel blob lezen.
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
);
Gegevens uit de xe_session_0_133614763336380000.xel blob lezen vanaf 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
);
Verwante inhoud
- Weergaven voor dynamisch beheer van uitgebreide gebeurtenissen
- Weergaven voor uitgebreide gebeurtenissencatalogus (Transact-SQL)
- Overzicht van uitgebreide gebeurtenissen
- Doelen voor uitgebreide gebeurtenissen
- Gebeurtenisgegevens weergeven in SQL Server Management Studio
- Een bestaand SQL-traceringsscript converteren naar een sessie met uitgebreide gebeurtenissen
- De system_health-sessie gebruiken