Dela via


sys.fn_xe_file_target_read_file (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Läser händelseloggens XEL-filer som skapats av målet Utökade händelser event_file . Varje rad i resultatuppsättningen representerar en händelse. Händelsedata returneras i XML-format.

XEL-filer kan också läsas av SQL Server Management Studio. En genomgång finns i Snabbstart: Utökade händelser.

Transact-SQL syntaxkonventioner

Syntax

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

Arguments

sökväg

Sökvägen till filerna som ska läsas. path är nvarchar(260) utan standard.

  • När den används med filer i det lokala filsystemet måste sökvägen innehålla namnet på en händelsesessionsloggfil. Filnamnet kan innehålla * som ett jokertecken för att läsa data från flera filer.

  • När den används med blobar i en Azure Storage-container är sökvägen en HTTP-URL som skapas av sammanlänkningen av två delar:

    1. Sökvägen till en Azure Storage-lagringscontainer följt av ett snedstreck (/).

    2. Ett vanligt prefix för namnen på blobar i containern som ska läsas. Om du vill läsa en enskild blob använder du blobens fullständiga namn.

    Om du till exempel använder https://<storage-account-name>.blob.core.windows.net/container-name>/xe_session som sökväg hämtas data från alla blobar med namn som börjar med xe_session, och oavsett resten av blobnamnet inklusive tillägget. Jokertecken kan inte anges.

mdpath

Sökvägen till metadatafilen som motsvarar filen eller filerna som anges av sökvägsargumentet . mdpath är nvarchar(260) utan standard.

I SQL Server 2012 (11.x) och senare versioner behöver du inte den här parametern. Den behålls för bakåtkompatibilitet för loggfiler som genererats i tidigare versioner av SQL Server. I SQL Server 2016 (13.x) och senare versioner kan den här parametern anges som NULL, eftersom .xem filer inte längre används.

initial_file_name

Den första filen som ska läsas från sökvägen. initial_file_name är nvarchar(260) utan standard. Om NULL anges som argument, läss alla filer som finns i sökvägen .

Filnamnet måste vara ett värde som returneras i resultatuppsättningen för ett sys.fn_xe_file_target_read_file funktionsanrop med samma sökväg.

initial_offset

Används för att ange senaste förskjutning som lästes tidigare. Hoppar över alla händelser upp till förskjutningen (inklusive). Händelseuppräkning startar efter att förskjutningen har angetts. initial_offset är storint. Om NULL har angetts som argumentet läss hela filen.

Anmärkning

initial_file_name och initial_offset är parkopplade argument. Om du anger ett värde för något av argumenten måste du ange ett värde för det andra argumentet.

Tabellen returnerades

Kolumnnamn Datatyp Description
module_guid uniqueidentifier Händelsemodulens GUID. Inte nullbar.
package_guid uniqueidentifier Händelsepaketets GUID. Inte nullbar.
object_name nvarchar(256) Namnet på händelsen. Inte nullbar.
event_data nvarchar(max) Händelseinnehållet i XML-format. Inte nullbar.
file_name nvarchar(260) Namnet på filen som innehåller händelsen. Inte nullbar.
file_offset bigint Förskjutningen av blocket i filen som innehåller händelsen. Inte nullbar.
timestamp_utc datetime2(7) Datum och tid (UTC-tidszon) för händelsen. Inte nullbar.

Gäller för: SQL Server 2017 (14.x) och senare versioner, Azure SQL Database och Azure SQL Managed Instance.

Anmärkningar

Om du läser stora resultatuppsättningar genom att sys.fn_xe_file_target_read_file köra i Management Studio kan det leda till ett fel. Använd läget Resultat till fil (i SQL Server Management Studio, Ctrl+Skift+F) för att exportera stora resultatuppsättningar till en fil som kan läsas av människor för att läsa filen med ett annat verktyg i stället.

SQL Server 2008 (10.0.x) och SQL Server 2008 R2 (10.50.x) accepterar spårningsresultat som genererats i XEL- och XEM-format. SQL Server 2012 (11.x) Extended Events stöder endast spårningsresultat i XEL-format. Vi rekommenderar att du använder Management Studio för att läsa spårningsresultat i XEL-format.

Azure SQL

I Azure SQL Managed Instance eller Azure SQL Database lagras filerna som skapats av event_file målet alltid som blobar i en Azure Storage-container.

Du kan använda sys.fn_xe_file_target_read_file för att läsa data från dessa blobar om det finns en autentiseringsuppgift som ger åtkomst till Azure Storage-containern. En genomgång finns i Skapa en händelsesession med ett event_file mål i Azure Storage.

Om du anger en sökväg till ett lokalt filsystem får du ett felmeddelande som liknar:

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

Permissions

I SQL Server 2019 (15.x) och tidigare versioner kräver VIEW SERVER STATE behörighet på servern.

I SQL Server 2022 (16.x) och senare versioner kräver VIEW SERVER PERFORMANCE STATE behörighet på servern.

Examples

A. Hämta data från filer i det lokala filsystemet

För SQL Server 2014 (12.x) och tidigare versioner hämtar följande exempel alla rader från alla filer, inklusive både .xel och .xem -filen. I det här exemplet finns filmål och metafiler i spårningsmappen C:\traces\ i mappen .

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

I SQL Server 2016 (13.x) och senare versioner hämtar följande exempel händelser i alla .xel filer i standardmappen. Standardplatsen finns \MSSQL\Log i installationsmappen för instansen.

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

I SQL Server 2017 (14.x) och senare versioner hämtar följande exempel endast data från den senaste dagen, från den inbyggda system_health-sessionen. Den system_health sessionen är en extended events-session som ingår som standard med SQL Server. Mer information finns i Använda system_health-sessionen.

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. Hämta data från blobar i en Azure Storage-container

Läsa data från alla blobar i containern med namn som börjar med 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
);

Läsa data från bloben xe_session_0_133614763336380000.xel .

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

Läs data från bloben xe_session_0_133614763336380000.xel från och med förskjutning 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
);