Sdílet prostřednictvím


sys.fn_xe_file_target_read_file (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Přečte soubory protokolu událostí XEL vytvořené cílem rozšířených událostí event_file . Každý řádek v sadě výsledků představuje událost. Data události se vrátí ve formátu XML.

Sql Server Management Studio může také číst soubory XEL. Návod najdete v tématu Rychlý start: Rozšířené události.

Transact-SQL konvence syntaxe

Syntaxe

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

Arguments

path

Cesta k souborům, které se mají přečíst. cesta je nvarchar(260) bez výchozího nastavení.

  • Při použití se soubory v místním systému souborů musí cesta obsahovat název souboru protokolu relace událostí. Název souboru může obsahovat * zástupný znak pro čtení dat z více souborů.

  • Při použití s objekty blob v kontejneru Azure Storage je cesta adresou URL HTTP sestavenou zřetězením dvou částí:

    1. Cesta ke kontejneru úložiště Azure Storage následovaná lomítkem (/).

    2. Běžná předpona pro názvy objektů blob v kontejneru, které by se měly číst. Pokud chcete přečíst jeden objekt blob, použijte úplný název objektu blob.

    Například použití https://<storage-account-name>.blob.core.windows.net/container-name>/xe_session jako cesta načte data ze všech objektů blob s názvy začínajícími xe_sessionna a bez ohledu na zbytek názvu objektu blob včetně rozšíření. Zástupné cardy nelze zadat.

mdpath

Cesta k souboru metadat, který odpovídá souboru nebo souborům určeným argumentem cesty . mdpath je nvarchar(260) bez výchozího nastavení.

V SQL Serveru 2012 (11.x) a novějších verzích tento parametr nepotřebujete. Zachovává se kvůli zpětné kompatibilitě souborů protokolů generovaných v předchozích verzích SQL Serveru. V SQL Serveru 2016 (13.x) a novějších verzích lze tento parametr zadat jako NULL, protože .xem soubory se už nepoužívají.

initial_file_name

První soubor, který se má přečíst z cesty. initial_file_name je nvarchar(260) bez výchozího nastavení. Pokud NULL je zadán jako argument, všechny soubory nalezené v cestě se načtou.

Název souboru musí být hodnota vrácená v sadě sys.fn_xe_file_target_read_file výsledků volání funkce se stejnou cestou.

initial_offset

Slouží k zadání předchozího čtení posledního posunu. Přeskočí všechny události až do posunu (včetně). Výčet událostí se spustí po zadaném posunu. initial_offset je velký. Pokud NULL je zadán jako argument, celý soubor se přečte.

Poznámka:

initial_file_name a initial_offset jsou spárované argumenty. Pokud zadáte hodnotu pro některý z argumentů, musíte zadat hodnotu druhého argumentu.

Vrácená tabulka

Název sloupce Datový typ Description
module_guid uniqueidentifier Identifikátor GUID modulu událostí. Nelze použít hodnotu null.
package_guid uniqueidentifier Identifikátor GUID balíčku události. Nelze použít hodnotu null.
object_name nvarchar(256) Název události. Nelze použít hodnotu null.
event_data nvarchar(max) Obsah události ve formátu XML. Nelze použít hodnotu null.
file_name nvarchar(260) Název souboru, který obsahuje událost. Nelze použít hodnotu null.
file_offset bigint Posun bloku v souboru, který obsahuje událost. Nelze použít hodnotu null.
timestamp_utc datetime2(7) Datum a čas (časové pásmo UTC) události. Nelze použít hodnotu null.

Platí pro: SQL Server 2017 (14.x) a novější verze, Azure SQL Database a Azure SQL Managed Instance.

Poznámky

Čtení velkých sad výsledků spuštěním sys.fn_xe_file_target_read_file v sadě Management Studio může vést k chybě. K exportu velkých sad výsledků do souboru do souboru použijte režim Soubor (v aplikaci SQL Server Management Studio , Ctrl+Shift+F), abyste mohli soubor číst pomocí jiného nástroje.

SQL Server 2008 (10.0.x) a SQL Server 2008 R2 (10.50.x) přijímají výsledky trasování generované ve formátu XEL a XEM. Rozšířené události SQL Serveru 2012 (11.x) podporují pouze výsledky trasování ve formátu XEL. Ke čtení výsledků trasování ve formátu XEL doporučujeme použít Management Studio.

Azure SQL

Ve službě Azure SQL Managed Instance nebo Azure SQL Database se soubory vytvořené event_file cílem vždy ukládají jako objekty blob v kontejneru Azure Storage.

Pokud existují přihlašovací údaje umožňující přístup ke kontejneru Azure Storage, můžete je použít sys.fn_xe_file_target_read_file ke čtení dat z těchto objektů blob. Návod najdete v tématu Vytvoření relace událostí s cílem event_file ve službě Azure Storage.

Pokud zadáte cestu k místnímu systému souborů, zobrazí se chybová zpráva podobná této:

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

Povolení

V SQL Serveru 2019 (15.x) a předchozích verzích vyžaduje VIEW SERVER STATE oprávnění k serveru.

V SYSTÉMU SQL Server 2022 (16.x) a novějších verzích vyžaduje VIEW SERVER PERFORMANCE STATE oprávnění k serveru.

Examples

A. Načtení dat ze souborů v místním systému souborů

Pro SQL Server 2014 (12.x) a předchozí verze získá následující příklad všechny řádky ze všech souborů, včetně souboru .xel i .xem souboru. V tomto příkladu jsou cíle souboru a metasoubory umístěny ve složce trasování ve C:\traces\ složce.

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

V SQL Serveru 2016 (13.x) a novějších verzích načte následující příklad události ve všech .xel souborech ve výchozí složce. Výchozí umístění je \MSSQL\Log v instalační složce instance.

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

V SQL Serveru 2017 (14.x) a novějších verzích načte následující příklad pouze data z posledního dne z integrované relace system_health. Relace system_health je relace rozšířených událostí, která je ve výchozím nastavení součástí SQL Serveru. Další informace najdete v tématu Použití relace system_health.

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. Načtení dat z objektů blob v kontejneru Azure Storage

Čtení dat ze všech objektů blob v kontejneru s názvy začínajícími na 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
);

Čtení dat z objektu xe_session_0_133614763336380000.xel blob

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

Čtení dat z objektu xe_session_0_133614763336380000.xel blob počínaje posunem 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
);