Aracılığıyla paylaş


sys.fn_xe_file_target_read_file (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Genişletilmiş Olaylar event_file hedefi tarafından oluşturulan olay günlüğü XEL dosyalarını okur. Sonuç kümesindeki her satır bir olayı temsil eder. Olay verileri XML biçiminde döndürülür.

XEL dosyaları SQL Server Management Studio tarafından da okunabilir. İzlenecek yol için bkz . Hızlı Başlangıç: Genişletilmiş Olaylar.

Transact-SQL söz dizimi kuralları

Sözdizimi

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

Arguments

yol

Okunacak dosyaların yolu. yol, varsayılan olmayan nvarchar(260)şeklindedir.

  • Yerel dosya sistemindeki dosyalarla kullanıldığında , yol bir olay oturumu günlük dosyasının adını içermelidir. Dosya adı, birden çok dosyadaki verileri okumak için joker karakter olarak içerebilir * .

  • Azure Depolama kapsayıcısında bloblarla kullanıldığında yol , iki bölümün birleştirilmiş olmasıyla oluşturulan bir HTTP URL'dir:

    1. Azure Depolama depolama kapsayıcısının yolu ve ardından eğik çizgi (/ ).

    2. Kapsayıcıdaki blobların adları için okunması gereken ortak bir ön ek. Tek bir blobu okumak için blobun tam adını kullanın.

    Örneğin https://<storage-account-name>.blob.core.windows.net/container-name>/xe_session, ile başlayan xe_sessionve uzantıyı içeren blob adının geri kalanından bağımsız olarak tüm bloblardan veri alır. Joker karakterler belirtilemiyor.

mdpath

Path bağımsız değişkeni tarafından belirtilen dosyaya veya dosyalara karşılık gelen meta veri dosyasının yolu . mdpath , varsayılan olmayan nvarchar(260) şeklindedir.

SQL Server 2012 (11.x) ve sonraki sürümlerinde bu parametreye ihtiyacınız yoktur. Geriye dönük uyumluluk için, SQL Server'ın önceki sürümlerinde oluşturulan günlük dosyaları için korunur. SQL Server 2016 (13.x) ve sonraki sürümlerinde, dosyalar artık kullanılmayacağı için NULL bu parametre olarak .xemverilebilir.

initial_file_name

Yoldan okunacak ilk dosya. initial_file_namevarsayılan olmayan nvarchar(260) değeridir. Bağımsız değişken olarak belirtilirse NULL, yolda bulunan tüm dosyalar okunur.

Dosya adı, aynı sys.fn_xe_file_target_read_file sahip bir işlev çağrısının sonuç kümesinde döndürülen bir değer olmalıdır.

initial_offset

Daha önce okunan son uzaklığı belirtmek için kullanılır. Uzaklık (dahil) değerine kadar tüm olayları atlar. Olay numaralandırması belirtilen uzaklık sonrasında başlar. initial_offsetbüyük bir şey. Bağımsız değişken olarak belirtilirse NULL , dosyanın tamamı okunur.

Uyarı

initial_file_name ve initial_offset eşleştirilmiş bağımsız değişkenlerdir. Bağımsız değişkenlerden biri için bir değer belirtirseniz, diğer bağımsız değişken için bir değer belirtmeniz gerekir.

Tablo döndürüldü

Sütun adı Veri türü Description
module_guid uniqueidentifier Olay modülü GUID'si. Boş değer atanamaz.
package_guid uniqueidentifier Olay paketi GUID'i. Boş değer atanamaz.
object_name nvarchar(256) Olayın adı. Boş değer atanamaz.
event_data nvarchar(max) Olay içeriği, XML biçimindedir. Boş değer atanamaz.
file_name nvarchar(260) Olayı içeren dosyanın adı. Boş değer atanamaz.
file_offset bigint Olayı içeren dosyadaki bloğun uzaklığı. Boş değer atanamaz.
timestamp_utc datetime2(7) Olayın tarih ve saati (UTC saat dilimi). Boş değer atanamaz.

Şunlar için geçerlidir: SQL Server 2017 (14.x) ve sonraki sürümleri, Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği.

Açıklamalar

Management Studio'da yürütülerek büyük sonuç kümelerinin okunması sys.fn_xe_file_target_read_file hataya neden olabilir. Büyük sonuç kümelerini insan tarafından okunabilen bir dosyaya aktarmak için Dosyaya Sonuçlar modunu (SQL Server Management Studio'da Ctrl+Shift+F) kullanarak dosyayı başka bir araçla okuyun.

SQL Server 2008 (10.0.x) ve SQL Server 2008 R2 (10.50.x), XEL ve XEM biçiminde oluşturulan izleme sonuçlarını kabul edin. SQL Server 2012 (11.x) Genişletilmiş Olaylar yalnızca XEL biçiminde izleme sonuçlarını destekler. İzleme sonuçlarını XEL biçiminde okumak için Management Studio kullanmanızı öneririz.

Azure SQL

Azure SQL Yönetilen Örneği veya Azure SQL Veritabanı'nda, hedef tarafından event_file oluşturulan dosyalar her zaman bir Azure Depolama kapsayıcısında blob olarak depolanır.

Azure Depolama kapsayıcısına erişime izin veren bir kimlik bilgisi varsa, bu bloblardan verileri okumak için kullanabilirsiniz sys.fn_xe_file_target_read_file . İzlenecek yol için Azure Depolama'da event_file hedefiyle olay oturumu oluşturma makalesini gözden geçirin.

Yerel bir dosya sistemi yolu belirtirseniz şuna benzer bir hata iletisi alırsınız:

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

Permissions

SQL Server 2019 (15.x) ve önceki sürümlerde VIEW SERVER STATE sunucuda izin gerekir.

SQL Server 2022 (16.x) ve sonraki sürümlerinde sunucuda izin gerekir VIEW SERVER PERFORMANCE STATE .

Örnekler

A. Yerel dosya sistemindeki dosyalardan veri alma

SQL Server 2014 (12.x) ve önceki sürümler için, aşağıdaki örnek hem hem .xel de .xem dosyası dahil olmak üzere tüm dosyalardan tüm satırları alır. Bu örnekte, dosya hedefleri ve meta dosyaları klasöründeki izleme klasöründe C:\traces\ bulunur.

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

SQL Server 2016 (13.x) ve sonraki sürümlerinde, aşağıdaki örnek varsayılan klasördeki tüm .xel dosyaların içindeki olayları alır. Varsayılan konum, örneğin yükleme klasöründedir \MSSQL\Log .

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

SQL Server 2017 (14.x) ve sonraki sürümlerinde aşağıdaki örnek, yerleşik system_health oturumundan yalnızca son güne ait verileri alır. system_health oturumu, varsayılan olarak SQL Server'a dahil edilen bir Genişletilmiş Olaylar oturumudur. Daha fazla bilgi için bkz. system_health oturumunu kullanma.

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. Azure Depolama kapsayıcısında bloblardan veri alma

ile başlayan xe_session_adlarla kapsayıcıdaki tüm bloblardaki verileri okuyun.

SELECT *
FROM sys.fn_xe_file_target_read_file(
    'https://<storage-account-name>.blob.core.windows.net/<container-name>/xe_session_',
    NULL,
    NULL,
    NULL
);

Blobdan xe_session_0_133614763336380000.xel verileri okuma.

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

33280 uzaklığıyla başlayarak blobdan xe_session_0_133614763336380000.xel verileri okuyun.

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