Bagikan melalui


sys.fn_xe_file_target_read_file (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceDatabase SQL di Microsoft Fabric

Membaca file XEL log peristiwa yang dibuat oleh target Kejadian event_file yang Diperluas. Setiap baris dalam tataan hasil mewakili peristiwa. Data peristiwa dikembalikan dalam format XML.

File XEL juga dapat dibaca oleh SQL Server Management Studio. Untuk panduan, lihat Mulai Cepat: Acara yang Diperluas.

Konvensi sintaks transact-SQL

Sintaks

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

Argumen

jalan

Jalur ke file yang akan dibaca. path adalah nvarchar(260) tanpa default.

  • Ketika digunakan dengan file dalam sistem file lokal, jalur harus menyertakan nama file log sesi peristiwa. Nama file dapat berisi * sebagai kartubebas untuk membaca data dari beberapa file.

  • Saat digunakan dengan blob dalam kontainer Azure Storage, jalur adalah URL HTTP yang dibangun oleh perangkaian dua bagian:

    1. Jalur ke kontainer penyimpanan Azure Storage, diikuti dengan garis miring (/).

    2. Awalan umum untuk nama blob dalam kontainer yang harus dibaca. Untuk membaca satu blob, gunakan nama lengkap blob.

    Misalnya, menggunakan https://<storage-account-name>.blob.core.windows.net/container-name>/xe_sessionsebagai jalur mengambil data dari semua blob dengan nama yang dimulai dengan xe_session, dan terlepas dari sisa nama blob termasuk ekstensi. Kartubebas tidak dapat ditentukan.

mdpath

Jalur ke file metadata yang sesuai dengan file atau file yang ditentukan oleh argumen jalur . mdpath adalah nvarchar(260) tanpa default.

Di SQL Server 2012 (11.x) dan versi yang lebih baru, Anda tidak memerlukan parameter ini. Ini dipertahankan untuk kompatibilitas mundur, untuk file log yang dihasilkan di versi SQL Server sebelumnya. Di SQL Server 2016 (13.x) dan versi yang lebih baru, parameter ini dapat diberikan sebagai NULL, .xem karena file tidak lagi digunakan.

initial_file_name

File pertama yang dibaca dari jalur. initial_file_name adalah nvarchar(260) tanpa default. Jika NULL ditentukan sebagai argumen, semua file yang ditemukan di jalur akan dibaca.

Nama file harus berupa nilai yang dikembalikan dalam kumpulan sys.fn_xe_file_target_read_file hasil panggilan fungsi dengan jalur yang sama.

initial_offset

Digunakan untuk menentukan baca offset terakhir sebelumnya. Melompati semua peristiwa hingga offset (inklusif). Enumerasi peristiwa dimulai setelah offset ditentukan. initial_offset besar. Jika NULL ditentukan sebagai argumen, seluruh file akan dibaca.

Catatan

initial_file_name dan initial_offset adalah argumen yang dipasangkan. Jika Anda menentukan nilai untuk salah satu argumen, Anda harus menentukan nilai untuk argumen lain.

Tabel dikembalikan

Nama kolom Jenis data Deskripsi
module_guid pengidentifikasi unik GUID modul peristiwa. Tidak dapat diubah ke null.
package_guid pengidentifikasi unik GUID paket peristiwa. Tidak dapat diubah ke null.
object_name nvarchar(256) Nama peristiwa. Tidak dapat diubah ke null.
event_data nvarchar(maks) Konten peristiwa, dalam format XML. Tidak dapat diubah ke null.
file_name nvarchar(260) Nama file yang berisi peristiwa. Tidak dapat diubah ke null.
file_offset bigint Offset blok dalam file yang berisi peristiwa. Tidak dapat diubah ke null.
timestamp_utc datetime2(7) Tanggal dan waktu (zona waktu UTC) peristiwa. Tidak dapat diubah ke null.

Berlaku untuk: SQL Server 2017 (14.x) dan versi yang lebih baru, Azure SQL Database, dan Azure SQL Managed Instance.

Keterangan

Membaca tataan hasil besar dengan menjalankan sys.fn_xe_file_target_read_file di Management Studio dapat mengakibatkan kesalahan. Gunakan mode Hasil ke File (di SQL Server Management Studio, Ctrl+Shift+F) untuk mengekspor tataan hasil besar ke file yang dapat dibaca manusia, untuk membaca file dengan alat lain sebagai gantinya.

SQL Server 2008 (10.0.x) dan SQL Server 2008 R2 (10.50.x) menerima hasil jejak yang dihasilkan dalam format XEL dan XEM. SQL Server 2012 (11.x) Extended Events hanya mendukung hasil pelacakan dalam format XEL. Kami menyarankan agar Anda menggunakan Management Studio untuk membaca hasil pelacakan dalam format XEL.

Azure SQL

Di Azure SQL Managed Instance atau Azure SQL Database, file yang dibuat oleh event_file target selalu disimpan sebagai blob dalam kontainer Azure Storage.

Anda dapat menggunakan sys.fn_xe_file_target_read_file untuk membaca data dari blob ini jika kredensial yang memungkinkan akses ke kontainer Azure Storage ada. Untuk panduan, tinjau Membuat sesi peristiwa dengan target event_file di Azure Storage.

Jika Anda menentukan jalur sistem file lokal, Anda menerima pesan kesalahan yang mirip dengan:

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

Izin

Di SQL Server 2019 (15.x) dan versi sebelumnya, memerlukan VIEW SERVER STATE izin di server.

Di SQL Server 2022 (16.x) dan versi yang lebih baru, memerlukan VIEW SERVER PERFORMANCE STATE izin di server.

Contoh

J. Mengambil data dari file dalam sistem file lokal

Untuk SQL Server 2014 (12.x) dan versi sebelumnya, contoh berikut mendapatkan semua baris dari semua file, termasuk .xel file dan .xem . Dalam contoh ini, target file dan metafiles terletak di folder pelacakan di C:\traces\ folder .

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

Di SQL Server 2016 (13.x) dan versi yang lebih baru, contoh berikut mengambil peristiwa di dalam semua .xel file di folder default. Lokasi default berada \MSSQL\Log dalam folder penginstalan instans.

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

Di SQL Server 2017 (14.x) dan versi yang lebih baru, contoh berikut hanya mengambil data dari hari terakhir, dari sesi system_health bawaan. Sesi system_health adalah sesi Extended Events yang disertakan secara default dengan SQL Server. Untuk informasi selengkapnya, lihat Menggunakan sesi 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. Mengambil data dari blob dalam kontainer Azure Storage

Membaca data dari semua blob dalam kontainer dengan nama yang dimulai dengan 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
);

Membaca data dari 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
);

Membaca data dari blob yang xe_session_0_133614763336380000.xel dimulai dengan offset 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
);