Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Database 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:
Percorso di un contenitore di archiviazione di Archiviazione di Azure, seguito da una barra (
/).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_sessioncome percorso recupera i dati da tutti i BLOB con nomi che iniziano conxe_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
);
Contenuto correlato
- Viste a gestione dinamica degli eventi estesi
- Viste del catalogo degli eventi estesi (Transact-SQL)
- Panoramica degli eventi estesi
- Destinazioni degli Eventi estesi
- Vedere dati degli eventi in SQL Server Management Studio
- Convertire uno script di Traccia SQL esistente in una sessione Eventi estesi
- Usare la sessione di system_health