Delen via


sys.fn_xe_file_target_read_file (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure 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:

    1. Het pad naar een Azure Storage-opslagcontainer, gevolgd door een slash (/).

    2. 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_session worden 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
);