Megosztás a következőn keresztül:


sys.fn_xe_file_target_read_file (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Beolvassa a Kiterjesztett események cél által létrehozott eseménynapló XEL-fájljait event_file . Az eredményhalmaz minden sora egy eseményt jelöl. Az eseményadatok XML formátumban lesznek visszaadva.

A XEL-fájlokat az SQL Server Management Studio is elolvashatja. Útmutató: Rövid útmutató: Bővített események.

Transact-SQL szintaxis konvenciók

Szemantika

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

Arguments

path

Az olvasni kívánt fájlok elérési útja. az elérési útnvarchar(260) alapértelmezett érték nélkül.

  • Ha a helyi fájlrendszerben lévő fájlokkal együtt használják, az elérési útnak tartalmaznia kell egy esemény-munkamenet naplófájljának nevét. A fájlnév helyettesítő karakterként is tartalmazhat * adatokat több fájlból való olvasáshoz.

  • Ha blobokkal együtt használják egy Azure Storage-tárolóban, az elérési út egy HTTP URL-cím, amelyet két rész összefűzésével lehet összeállítani:

    1. Az Azure Storage-tároló elérési útja, majd egy perjel (/).

    2. A tárolóban olvasható blobok nevének gyakori előtagja. Egyetlen blob olvasásához használja a blob teljes nevét.

    Az https://<storage-account-name>.blob.core.windows.net/container-name>/xe_session használata például az összes olyan blob adatait kéri le, amelynek neve a következővel kezdődikxe_session, és függetlenül attól, hogy a blobnév többi része, beleértve a bővítményt is. Helyettesítő karakterek nem adhatók meg.

mdpath

A metaadatfájl elérési útja, amely megfelel az elérési út argumentumban megadott fájlnak vagy fájloknak. Az mdpathnvarchar(260) alapértelmezett érték nélkül.

Az SQL Server 2012 (11.x) és újabb verzióiban nincs szükség erre a paraméterre. A rendszer megőrzi a visszamenőleges kompatibilitás érdekében, az SQL Server korábbi verzióiban létrehozott naplófájlok esetében. Az SQL Server 2016 (13.x) és újabb verzióiban ez a paraméter megadható, mivel NULL.xem a fájlok már nem használhatók.

initial_file_name

Az elérési útról elsőként beolvasandó fájl. initial_file_namenvarchar(260) alapértelmezett érték nélkül. Ha NULL argumentumként van megadva, a rendszer az elérési úton található összes fájlt felolvassa.

A fájlnévnek egy azonos sys.fn_xe_file_target_read_file rendelkező függvényhívás eredményhalmazában visszaadott értéknek kell lennie.

initial_offset

Az utolsó eltolás beolvasásának megadására szolgál. Az összes eseményt átugorja az eltolásig (beleértve). Az esemény számbavétele a megadott eltolás után kezdődik. initial_offsetnagy. Ha NULL argumentumként van megadva, a teljes fájl beolvasva lesz.

Megjegyzés:

initial_file_name és initial_offset párosított argumentumok. Ha bármelyik argumentumhoz értéket ad meg, meg kell adnia a másik argumentum értékét.

Visszaadott tábla

Oszlop név Adattípus Description
module_guid uniqueidentifier Az eseménymodul GUID azonosítója. Nem null értékű.
package_guid uniqueidentifier Az eseménycsomag GUID azonosítója. Nem null értékű.
object_name nvarchar(256) Az esemény neve. Nem null értékű.
event_data nvarchar(max) Az esemény tartalma XML formátumban. Nem null értékű.
file_name nvarchar(260) Az eseményt tartalmazó fájl neve. Nem null értékű.
file_offset bigint Az eseményt tartalmazó fájl blokkjának eltolása. Nem null értékű.
timestamp_utc datetime2(7) Az esemény dátuma és időpontja (UTC időzóna). Nem null értékű.

A következőkre vonatkozik: SQL Server 2017 (14.x) és újabb verziók, Azure SQL Database és Felügyelt Azure SQL-példány.

Megjegyzések

Ha nagy eredményhalmazokat olvas be a Management Studióban való sys.fn_xe_file_target_read_file végrehajtással, az hibát okozhat. A Találatok fájlba módban (az SQL Server Management Studióban a Ctrl+Shift+F billentyűkombinációval) exportálhat nagy eredményhalmazokat egy emberi olvasásra alkalmas fájlba, és ehelyett egy másik eszközzel olvassa be a fájlt.

Az SQL Server 2008 (10.0.x) és az SQL Server 2008 R2 (10.50.x) XEL és XEM formátumban létrehozott nyomkövetési eredményeket fogad el. Az SQL Server 2012 (11.x) Bővített események csak XEL formátumban támogatják a nyomkövetési eredményeket. Javasoljuk, hogy a Management Studióval olvassa el a nyomkövetési eredményeket XEL formátumban.

Azure SQL

A felügyelt Azure SQL-példányban vagy az Azure SQL Database-ben a event_file cél által létrehozott fájlok mindig blobokként vannak tárolva egy Azure Storage-tárolóban.

Ezekből a blobokból akkor olvashat sys.fn_xe_file_target_read_file adatokat, ha létezik egy hitelesítő adat, amely lehetővé teszi az Azure Storage-tárolóhoz való hozzáférést. Útmutatóként tekintse át az Esemény-munkamenet létrehozása event_file-célokkal az Azure Storage-ban című cikket.

Ha helyi fájlrendszer elérési útját adja meg, a következőhöz hasonló hibaüzenet jelenik meg:

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

Permissions

Az SQL Server 2019 -ben (15.x) és a korábbi verziókban engedély szükséges VIEW SERVER STATE a kiszolgálón.

Az SQL Server 2022 -ben (16.x) és újabb verziókban engedélyre van szükség VIEW SERVER PERFORMANCE STATE a kiszolgálón.

Példák

A. Adatok lekérése a helyi fájlrendszer fájljaiból

Az SQL Server 2014 (12.x) és az előző verziók esetében az alábbi példa minden sort lekéri az összes fájlból, beleértve a fájlt és .xel a .xem fájlt is. Ebben a példában a fájlpéldányok és a metafájlok a mappa nyomkövetési C:\traces\ mappájában találhatók.

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

Az SQL Server 2016 (13.x) és újabb verzióiban az alábbi példa az alapértelmezett mappában lévő összes .xel fájlban lekéri az eseményeket. Az alapértelmezett hely a példány telepítési mappájában található \MSSQL\Log .

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

Az SQL Server 2017 (14.x) és újabb verzióiban az alábbi példa csak az utolsó nap adatait kéri le a beépített system_health munkamenetből. A system_health munkamenet egy bővített események munkamenet, amely alapértelmezés szerint az SQL Server részét képezi. További információ: A system_health munkamenet használata.

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. Adatok lekérése egy Azure Storage-tárolóban lévő blobokból

A tárolóban lévő összes blob adatainak olvasása a következővel kezdődő névvel 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
);

Adatok beolvasása a xe_session_0_133614763336380000.xel blobból.

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

Adatok beolvasása a blobból a xe_session_0_133614763336380000.xel 33280 eltolástól kezdve.

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