Condividi tramite


sys.fn_xe_file_target_read_file (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureDatabase SQL in Microsoft Fabric

Legge i file XEL del registro eventi creati dalla destinazione Eventi event_file estesi. Ogni riga nel set di risultati rappresenta un evento. I dati dell'evento vengono restituiti in formato XML.

I file XEL possono essere letti anche da SQL Server Management Studio. Per una procedura dettagliata, vedere Guida introduttiva: Eventi estesi.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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

Argomenti

path

Percorso dei file da leggere. path è nvarchar(260) senza impostazione predefinita.

  • Se usato con i file nel file system locale, il percorso deve includere il nome di un file di log della sessione eventi. Il nome del file può contenere * come carattere jolly per leggere i dati da più file.

  • Se usato con i BLOB in un contenitore di Archiviazione di Azure, il percorso è un URL HTTP costruito dalla concatenazione di due parti:

    1. Percorso di un contenitore di archiviazione di Archiviazione di Azure, seguito da una barra (/).

    2. Prefisso comune per i nomi dei BLOB nel contenitore da leggere. Per leggere un singolo BLOB, usare il nome completo del BLOB.

    Ad esempio, l'uso di https://<storage-account-name>.blob.core.windows.net/container-name>/xe_session come percorso recupera i dati da tutti i BLOB con nomi che iniziano con xe_sessione indipendentemente dal resto del nome del BLOB, inclusa l'estensione. Non è possibile specificare caratteri jolly.

mdpath

Percorso del file di metadati corrispondente al file o ai file specificati dall'argomento path . mdpath è nvarchar(260) senza impostazione predefinita.

In SQL Server 2012 (11.x) e versioni successive non è necessario questo parametro. Viene conservato per la compatibilità con le versioni precedenti, per i file di log generati nelle versioni precedenti di SQL Server. In SQL Server 2016 (13.x) e versioni successive questo parametro può essere assegnato come NULL, perché .xem i file non vengono più usati.

initial_file_name

Primo file da leggere dal percorso. initial_file_name è nvarchar(260) senza impostazione predefinita. Se NULL viene specificato come argomento, vengono letti tutti i file trovati nel percorso .

Il nome file deve essere un valore restituito nel set di risultati di una sys.fn_xe_file_target_read_file chiamata di funzione con lo stesso percorso.

initial_offset

Utilizzato per specificare l'ultimo offset letto in precedenza. Ignora tutti gli eventi fino all'offset (inclusivo). L'enumerazione degli eventi inizia dopo l'offset specificato. initial_offset è bigint. Se NULL viene specificato come argomento, l'intero file viene letto.

Nota

initial_file_name e initial_offset sono argomenti associati. Se si specifica un valore per uno degli argomenti, è necessario specificare un valore per l'altro argomento.

Tabella restituita

Nome colonna Tipo di dati Descrizione
module_guid uniqueidentifier GUID del modulo dell'evento. Non ammette i valori NULL.
package_guid uniqueidentifier GUID del pacchetto dell'evento. Non ammette i valori NULL.
object_name nvarchar(256) Nome dell'evento. Non ammette i valori NULL.
event_data nvarchar(max) Contenuto dell'evento in formato XML. Non ammette i valori NULL.
file_name nvarchar(260) Nome del file che contiene l'evento. Non ammette i valori NULL.
file_offset bigint Offset del blocco nel file che contiene l'evento. Non ammette i valori NULL.
timestamp_utc datetime2(7) Data e ora (fuso orario UTC) dell'evento. Non ammette i valori NULL.

Si applica a: SQL Server 2017 (14.x) e versioni successive, database SQL di Azure e Istanza gestita di SQL di Azure.

Osservazioni:

La lettura di set di risultati di grandi dimensioni eseguendo sys.fn_xe_file_target_read_file in Management Studio potrebbe generare un errore. Usare la modalità Risultati in file (in SQL Server Management Studio, CTRL+MAIUSC+F) per esportare set di risultati di grandi dimensioni in un file leggibile dall'utente, per leggere il file con un altro strumento.

SQL Server 2008 (10.0.x) e SQL Server 2008 R2 (10.50.x) accettano i risultati della traccia generati in formato XEL e XEM. Gli eventi estesi di SQL Server 2012 (11.x) supportano solo i risultati della traccia in formato XEL. È consigliabile usare Management Studio per leggere i risultati della traccia in formato XEL.

Azure SQL

In Istanza gestita di SQL di Azure o nel database SQL di Azure i file creati dalla event_file destinazione vengono sempre archiviati come BLOB in un contenitore di Archiviazione di Azure.

È possibile usare sys.fn_xe_file_target_read_file per leggere i dati da questi BLOB se esiste una credenziale che consente l'accesso al contenitore di Archiviazione di Azure. Per una procedura dettagliata, vedere Creare una sessione eventi con una destinazione event_file in Archiviazione di Azure.

Se si specifica un percorso del file system locale, viene visualizzato un messaggio di errore simile al seguente:

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

Autorizzazioni

In SQL Server 2019 (15.x) e versioni precedenti è richiesta VIEW SERVER STATE l'autorizzazione per il server.

In SQL Server 2022 (16.x) e versioni successive è richiesta VIEW SERVER PERFORMANCE STATE l'autorizzazione per il server.

Esempi

R. Recuperare dati dai file nel file system locale

Per SQL Server 2014 (12.x) e le versioni precedenti, l'esempio seguente ottiene tutte le righe da tutti i file, incluso sia il file che .xel ..xem In questo esempio, le destinazioni e i metafile del file si trovano nella cartella di traccia nella C:\traces\ cartella .

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

In SQL Server 2016 (13.x) e versioni successive, l'esempio seguente recupera gli eventi all'interno di tutti i .xel file nella cartella predefinita. Il percorso predefinito si trova \MSSQL\Log all'interno della cartella di installazione dell'istanza.

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

In SQL Server 2017 (14.x) e versioni successive, l'esempio seguente recupera solo i dati dall'ultimo giorno, dalla sessione di system_health predefinita. La sessione system_health è una sessione eventi estesi inclusa per impostazione predefinita con SQL Server. Per altre informazioni, vedere Utilizzare la sessione 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. Recuperare dati dai BLOB in un contenitore di Archiviazione di Azure

Leggere i dati da tutti i BLOB nel contenitore con nomi che iniziano con 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
);

Legge i dati dal 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
);

Legge i dati dal BLOB a partire dall'offset xe_session_0_133614763336380000.xel 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
);