Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Database SQL di Microsoft Fabric
Artikel ini menjelaskan dua set tampilan sistem yang terkait dengan Peristiwa yang Diperluas. Artikel ini mengilustrasikan:
- Cara untuk
JOINberbagai tampilan sistem. - Cara
SELECTjenis informasi tertentu dari tampilan sistem.
Ada dua set tampilan sistem untuk Kejadian yang Diperluas:
Tampilan katalog
- Tampilan ini menyimpan informasi tentang definisi setiap sesi peristiwa yang dibuat oleh CREATE EVENT SESSION (Transact-SQL). Tetapi tampilan ini tidak tahu apa-apa tentang apakah ada sesi yang pernah mulai berjalan.
- Misalnya, jika Object Explorer SSMS menunjukkan bahwa tidak ada sesi peristiwa yang didefinisikan, maka melakukan SELECT dari tampilan
sys.server_event_session_targetsakan mengembalikan nol baris.
- Misalnya, jika Object Explorer SSMS menunjukkan bahwa tidak ada sesi peristiwa yang didefinisikan, maka melakukan SELECT dari tampilan
- Sebagian besar contoh ditulis untuk SQL Server dan Azure SQL Managed Instance. Tetapi dengan pengeditan kecil, mereka akan berjalan di Azure SQL Database, dan database SQL di Fabric dengan mengubah
serverdalam nama DMV menjadidatabase:-
sys.server_event_session*adalah awalan nama di SQL Server dan Azure SQL Managed Instance. -
sys.database_event_session*adalah awalan nama pada Azure SQL Database dan database SQL di Fabric. - Untuk informasi selengkapnya tentang masing-masing, lihat Tampilan Katalog Peristiwa yang Diperluas.
-
Tampilan manajemen dinamis (DMV)
Simpan informasi tentang aktivitas sesi peristiwa yang sedang berjalan saat ini. Tetapi DMV ini tahu sedikit tentang definisi sesi.
- Bahkan jika semua sesi acara saat ini dihentikan,
SELECTdari tampilansys.dm_xe_packagestetap mengembalikan baris karena berbagai paket dimuat ke dalam memori aktif saat server dinyalakan. - Untuk alasan yang sama,
sys.dm_xe_objectsdansys.dm_xe_object_columnsmasih mengembalikan baris.
- Bahkan jika semua sesi acara saat ini dihentikan,
Awalan nama untuk DMV Kejadian yang Diperluas adalah:
-
sys.dm_xe_*adalah awalan nama di SQL Server dan Azure SQL Managed Instance. -
sys.dm_xe_database_*umumnya adalah awalan nama pada Azure SQL Database dan database SQL di Fabric.
-
Permissions
Untuk SELECT dari tampilan sistem, izin berikut diperlukan:
- SQL Server 2019 (15.x) dan versi sebelumnya memerlukan
VIEW SERVER STATEizin di server. - SQL Server 2022 (16.x) dan versi yang lebih baru memerlukan
VIEW SERVER PERFORMANCE STATEizin di server. - Database Azure SQL dan database SQL di Fabric memerlukan
VIEW DATABASE PERFORMANCE STATEizin dalam database.
Tampilan katalog
Untuk tujuan halaman ini, buat sesi Extended Events dengan SSMS atau dengan T-SQL. Instal versi terbaru SQL Server Management Studio (SSMS).
Membuat sesi di SQL Server Management Studio (SSMS)
Di SSMS, di Object Explorer, Anda dapat memulai dialog Sesi Baru dengan memperluas Manajemen>Peristiwa Diperluas, lalu klik kanan Sesi>Sesi Baru.
Dalam dialog Sesi Baru besar, di bagian pertamanya berlabel Umum, kita melihat opsi telah dipilih untuk Memulai sesi peristiwa di startup server.
Selanjutnya di bagian Peristiwa , kita melihat lock_deadlock peristiwa dipilih. Untuk peristiwa itu, kita melihat bahwa tiga Tindakan telah dipilih. Ini berarti tombol Konfigurasi dipilih, yang menjadi abu-abu setelah dipilih.
> Events, Global Fields (Actions).
Selanjutnya, masih pada bagianKonfigurasi>, kita melihat bahwa resource_type telah diatur ke PAGE. Ini berarti bahwa data peristiwa tidak akan dikirim dari mesin peristiwa ke target jika nilai resource_type adalah apa pun selain PAGE.
Kami melihat filter predikat tambahan untuk nama database dan untuk penghitung.
> Events, Filter Predicate Fields (Actions).
Selanjutnya di bagian Penyimpanan Data, kita melihat event_file telah dipilih sebagai target. Selanjutnya, kita melihat bahwa opsi Aktifkan peranover file telah dipilih.
> Data Storage, eventfile_enablefileroleover.
Terakhir, pada bagian Tingkat Lanjut , kita melihat bahwa nilai Latensi pengiriman maksimum berkurang menjadi 4 detik.
Membuat sesi acara di T-SQL
Tidak peduli bagaimana definisi sesi peristiwa dibuat, dari SSMS sesi dapat direkayasa ulang menjadi skrip Transact-SQL yang sangat sesuai. Anda dapat memeriksa cuplikan layar Sesi Baru sebelumnya dan membandingkan spesifikasi yang terlihat dengan klausul dalam skrip T-SQL CREATE EVENT SESSION yang dihasilkan berikut.
Untuk menganalisis kembali sesi peristiwa, di Object Explorer Anda dapat mengklik kanan simpul sesi Anda, lalu memilih Skripsikan Sesi sebagai>CREATE untuk menyalin ke >Clipboard.
CREATE EVENT SESSION [event_session_test3]
ON SERVER -- Or, if on Azure SQL Database, ON DATABASE.
ADD EVENT sqlserver.lock_deadlock
(
SET
collect_database_name = (1)
ACTION
(
package0.collect_system_time,
package0.event_sequence,
sqlserver.client_hostname
)
WHERE
(
[database_name] = N'InMemTest2'
AND [package0].[counter] <= (16)
AND [resource_type] = (6)
)
)
ADD TARGET package0.event_file
(
SET
filename = N'c:\temp\\event_session_test3_EF.xel',
max_file_size = (20),
max_rollover_files = (2)
)
WITH
(
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 4 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
);
Tampilan katalog SELECT JOIN UNION
Pernyataan T-SQL SELECT berikut hanya panjang karena menggabungkan beberapa SELECT kecil menjadi satu dengan UNION. Salah satu SELECT kecil dapat dijalankan sendiri. SELECT kecil menunjukkan bagaimana berbagai tampilan katalog sistem harus diSatukan.
SELECT
s.name AS [Session-Name],
'1_EVENT' AS [Clause-Type],
'Event-Name' AS [Parameter-Name],
e.name AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
JOIN sys.server_event_session_events AS e
ON e.event_session_id = s.event_session_id
WHERE
s.name = 'event_session_test3'
UNION ALL
SELECT
s.name AS [Session-Name],
'2_EVENT_SET' AS [Clause-Type],
f.name AS [Parameter-Name],
f.value AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
JOIN sys.server_event_session_events AS e
ON e.event_session_id = s.event_session_id
JOIN sys.server_event_session_fields As f
ON f.event_session_id = s.event_session_id
AND f.object_id = e.event_id
WHERE
s.name = 'event_session_test3'
UNION ALL
SELECT
s.name AS [Session-Name],
'3_EVENT_ACTION' AS [Clause-Type],
a.package + '.' + a.name
AS [Parameter-Name],
'(Not_Applicable)' AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
JOIN sys.server_event_session_events AS e
ON e.event_session_id = s.event_session_id
JOIN sys.server_event_session_actions As a
ON a.event_session_id = s.event_session_id
AND a.event_id = e.event_id
WHERE
s.name = 'event_session_test3'
UNION ALL
SELECT
s.name AS [Session-Name],
'4_EVENT_PREDICATES' AS [Clause-Type],
e.predicate AS [Parameter-Name],
'(Not_Applicable)' AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
JOIN sys.server_event_session_events AS e
ON e.event_session_id = s.event_session_id
WHERE
s.name = 'event_session_test3'
UNION ALL
SELECT
s.name AS [Session-Name],
'5_TARGET' AS [Clause-Type],
t.name AS [Parameter-Name],
'(Not_Applicable)' AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
JOIN sys.server_event_session_targets AS t
ON t.event_session_id = s.event_session_id
WHERE
s.name = 'event_session_test3'
UNION ALL
SELECT
s.name AS [Session-Name],
'6_TARGET_SET' AS [Clause-Type],
f.name AS [Parameter-Name],
f.value AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
JOIN sys.server_event_session_targets AS t
ON t.event_session_id = s.event_session_id
JOIN sys.server_event_session_fields As f
ON f.event_session_id = s.event_session_id
AND f.object_id = t.target_id
WHERE
s.name = 'event_session_test3'
UNION ALL
SELECT
s.name AS [Session-Name],
'7_WITH_MAX_MEMORY' AS [Clause-Type],
'max_memory' AS [Parameter-Name],
s.max_memory AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
WHERE
s.name = 'event_session_test3'
UNION ALL
SELECT
s.name AS [Session-Name],
'7_WITH_STARTUP_STATE' AS [Clause-Type],
'startup_state' AS [Parameter-Name],
s.startup_state AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
WHERE
s.name = 'event_session_test3'
ORDER BY
[Session-Name],
[Clause-Type],
[Parameter-Name]
;
Output
Tabel berikut menunjukkan output dari menjalankan SELECT JOIN UNION sebelumnya. Nama parameter output dan nilai dipetakan ke apa yang terlihat secara biasa dalam pernyataan sebelumnya CREATE EVENT SESSION .
| Nama Sesi | Jenis Klausa | Nama Parameter | Nilai Parameter |
|---|---|---|---|
event_session_test3 |
1_EVENT | Nama Peristiwa | lock_deadlock |
event_session_test3 |
2_EVENT_SET | collect_database_name | 1 |
event_session_test3 |
3_EVENT_ACTION | sqlserver.client_hostname | (Not_Applicable) |
event_session_test3 |
3_EVENT_ACTION | sqlserver.collect_system_time | (Not_Applicable) |
event_session_test3 |
3_EVENT_ACTION | sqlserver.event_sequence | (Not_Applicable) |
event_session_test3 |
4_EVENT_PREDICATES | ([sqlserver]. [equal_i_sql_unicode_string]([database_name],N'InMemTest2') AND [package0]. [penghitung]<=(16)) |
(Not_Applicable) |
event_session_test3 |
5_TARGET | event_file | (Not_Applicable) |
event_session_test3 |
6_TARGET_SET | filename | c:\temp\event_session_test3_EF.xel |
event_session_test3 |
6_TARGET_SET | max_file_size | 20 |
event_session_test3 |
6_TARGET_SET | max_rollover_files | 2 |
event_session_test3 |
7_WITH_MAX_MEMORY | max_memory | 4096 |
event_session_test3 |
7_WITH_STARTUP_STATE | startup_state | 1 |
Ini melengkapi bagian pada tampilan katalog.
Tampilan manajemen dinamis (DMV)
Bagian ini menyediakan beberapa pernyataan Transact-SQL SELECT yang masing-masing melayani tujuan bisnis tertentu yang berguna. Selanjutnya, SELECTs menunjukkan bagaimana Anda dapat menggabungkan DMV untuk setiap penggunaan baru yang Anda inginkan.
Dokumentasi referensi DMV tersedia di Extended Events Dynamic Management Views
Semua objek yang dapat Anda gunakan di area peristiwa yang diperluas berasal dari paket yang dimuat ke dalam sistem. Bagian ini mencantumkan semua paket dan deskripsinya.
SELECT --C.1
p.name AS [Package],
p.description AS [Package-Description]
FROM
sys.dm_xe_packages AS p
ORDER BY
p.name;
Output
Berikut adalah daftar paket.
| Paket | Deskripsi Paket |
|---|---|
filestream |
Kejadian yang diperluas untuk SQL Server FILESTREAM dan FileTable |
package0 |
Paket default. Berisi semua jenis standar, peta, membandingkan operator, tindakan, dan target |
qds |
Kejadian yang diperluas untuk Penyimpanan Kueri |
SecAudit |
Peristiwa Audit Keamanan |
sqlclr |
Event yang diperpanjang untuk SQL CLR |
sqlos |
Peristiwa yang diperluas untuk Sistem Operasi SQL |
SQLSatellite |
Peristiwa yang diperluas untuk SQL Server Machine Learning Services |
sqlserver |
Acara yang diperluas untuk Microsoft SQL Server |
sqlsni |
Acara yang diperluas untuk Microsoft SQL Server |
ucs |
Kejadian yang diperluas untuk Tumpukan Komunikasi Terpadu |
XtpCompile |
Peristiwa yang diperluas untuk Kompilasi XTP |
XtpEngine |
Peristiwa yang diperluas untuk Mesin XTP |
XtpRuntime |
Peristiwa yang diperluas untuk XTP Runtime |
Definisi inisialisme sebelumnya:
-
clr= Common Language Runtime dari .NET -
qds= Penyimpanan Data untuk Kuari -
sni= Antarmuka Jaringan Server -
ucs= Tumpukan Komunikasi Terpadu -
xtp= Pemrosesan Transaksi Ekstrem
PILIH semua item yang tersedia yang diurutkan menurut jenis
Berikut ini SELECT mengembalikan satu baris untuk setiap objek.
SELECT --C.3
o.object_type AS [Type-of-Item],
p.name AS [Package],
o.name AS [Item],
o.description AS [Item-Description]
FROM
sys.dm_xe_objects AS o
JOIN sys.dm_xe_packages AS p ON o.package_guid = p.guid
WHERE
o.object_type IN ('action' , 'target' , 'pred_source')
AND
(
(o.capabilities & 1) = 0
OR
o.capabilities IS NULL
)
ORDER BY
[Type-of-Item],
[Package],
[Item];
Bidang data tersedia untuk acara Anda
Berikut ini SELECT mengembalikan semua bidang data yang khusus untuk jenis peristiwa Anda.
- Silakan perhatikan klausa item
WHERE:column_type = 'data'. - Selain itu, Anda perlu mengedit nilai klausul untuk
WHEREo.name =.
SELECT -- C.4
p.name AS [Package],
c.object_name AS [Event],
c.name AS [Column-for-Predicate-Data],
c.description AS [Column-Description]
FROM
sys.dm_xe_object_columns AS c
JOIN sys.dm_xe_objects AS o
ON o.name = c.object_name
JOIN sys.dm_xe_packages AS p
ON p.guid = o.package_guid
WHERE
c.column_type = 'data'
AND
o.object_type = 'event'
AND
o.name = '\<EVENT-NAME-HERE!>' --'lock_deadlock'
ORDER BY
[Package],
[Event],
[Column-for-Predicate-Data];
Output
Baris berikut dikembalikan oleh elemen sebelumnya SELECT, WHERE o.name = 'lock_deadlock':
- Setiap baris mewakili filter opsional untuk peristiwa tersebut
sqlserver.lock_deadlock. - Kolom
Column-Descriptiondihilangkan dari tampilan berikut. Nilainya seringNULL. - Ini adalah output aktual, kecuali untuk kolom Deskripsi yang dihilangkan yang sering
NULL. - Baris-baris ini adalah
WHERE object_type = 'lock_deadlock'.
| Paket | Kejadian | Kolom-untuk-Predikat-Data |
|---|---|---|
sqlserver |
lock_deadlock |
associated_object_id |
sqlserver |
lock_deadlock |
database_id |
sqlserver |
lock_deadlock |
database_name |
sqlserver |
lock_deadlock |
deadlock_id |
sqlserver |
lock_deadlock |
duration |
sqlserver |
lock_deadlock |
lockspace_nest_id |
sqlserver |
lock_deadlock |
lockspace_sub_id |
sqlserver |
lock_deadlock |
lockspace_workspace_id |
sqlserver |
lock_deadlock |
mode |
sqlserver |
lock_deadlock |
object_id |
sqlserver |
lock_deadlock |
owner_type |
sqlserver |
lock_deadlock |
resource_0 |
sqlserver |
lock_deadlock |
resource_1 |
sqlserver |
lock_deadlock |
resource_2 |
sqlserver |
lock_deadlock |
resource_description |
sqlserver |
lock_deadlock |
resource_type |
sqlserver |
lock_deadlock |
transaction_id |
sys.dm_xe_map_values dan bidang peristiwa
Berikut ini SELECT termasuk JOIN ke tampilan sys.dm_xe_map_values.
Tujuan SELECT adalah menampilkan berbagai bidang yang dapat Anda pilih untuk sesi acara Anda. Bidang peristiwa dapat digunakan dengan dua cara:
- Untuk memilih bidang nilai mana yang akan ditulis ke target Anda untuk setiap kejadian peristiwa.
- Untuk memfilter kejadian peristiwa mana yang akan dikirim ke versus disimpan dari target Anda.
SELECT --C.5
dp.name AS [Package],
do.name AS [Object],
do.object_type AS [Object-Type],
'o--c' AS [O--C],
dc.name AS [Column],
dc.type_name AS [Column-Type-Name],
dc.column_type AS [Column-Type],
dc.column_value AS [Column-Value],
'c--m' AS [C--M],
dm.map_value AS [Map-Value],
dm.map_key AS [Map-Key]
FROM sys.dm_xe_objects AS do
JOIN sys.dm_xe_object_columns AS dc
ON dc.object_name = do.name
JOIN sys.dm_xe_map_values AS dm
ON dm.name = dc.type_name
JOIN sys.dm_xe_packages AS dp
ON dp.guid = do.package_guid
WHERE
do.object_type = 'event'
AND
do.name = '\<YOUR-EVENT-NAME-HERE!>' --'lock_deadlock'
ORDER BY
[Package],
[Object],
[Column],
[Map-Value];
Output
Selanjutnya adalah sampel dari lebih dari 100 baris keluaran aktual dari T-SQL SELECT sebelumnya. Baris pada resource_typerelevan dengan pemfilteran predikat yang digunakan dalam contoh event_session_test3 di bagian lain artikel ini.
/*** 5 sampled rows from the actual rows returned.
NOTE: 'resource_type' under 'Column'.
Package Object Object-Type O--C Column Column-Type-Name Column-Type Column-Value C--M Map-Value Map-Key
------- ------ ----------- ---- ------ ---------------- ----------- ------------ ---- --------- -------
sqlserver lock_deadlock event o--c CHANNEL etw_channel readonly 2 c--m Operational 4
sqlserver lock_deadlock event o--c KEYWORD keyword_map readonly 16 c--m access_methods 1024
sqlserver lock_deadlock event o--c mode lock_mode data NULL c--m IX 8
sqlserver lock_deadlock event o--c owner_type lock_owner_type data NULL c--m Cursor 2
sqlserver lock_deadlock event o--c resource_type lock_resource_type data NULL c--m PAGE 6
Therefore, on your CREATE EVENT SESSION statement, in its ADD EVENT WHERE clause,
you could put:
WHERE( ... resource_type = 6 ...) -- Meaning: 6 = PAGE.
***/
Parameter-parameter untuk sasaran-sasaran
Berikut ini SELECT mengembalikan setiap parameter untuk target Anda. Setiap parameter ditandai untuk menunjukkan apakah itu wajib. Nilai yang Anda tetapkan ke parameter memengaruhi perilaku target.
- Silakan perhatikan klausa item
WHERE:object_type = 'customizable'. - Selain itu, Anda perlu mengedit nilai klausul untuk
WHEREo.name =.
SELECT --C.6
p.name AS [Package],
o.name AS [Target],
c.name AS [Parameter],
c.type_name AS [Parameter-Type],
CASE c.capabilities_desc
WHEN 'mandatory' THEN 'YES_Mandatory'
ELSE 'Not_mandatory'
END AS [IsMandatoryYN],
c.description AS [Parameter-Description]
FROM
sys.dm_xe_objects AS o
JOIN sys.dm_xe_packages AS p
ON o.package_guid = p.guid
LEFT OUTER JOIN sys.dm_xe_object_columns AS c
ON o.name = c.object_name
AND c.column_type = 'customizable' -- !
WHERE
o.object_type = 'target'
AND
o.name LIKE '%' -- Or '\<YOUR-TARGET-NAME-HERE!>'.
ORDER BY
[Package],
[Target],
[IsMandatoryYN] DESC,
[Parameter];
Output
Baris parameter berikut adalah subset kecil dari yang dikembalikan oleh sebelumnya SELECT.
/*** Actual output, all rows, where target name = 'event_file'.
Package Target Parameter Parameter-Type IsMandatoryYN Parameter-Description
------- ------ --------- -------------- ------------- ---------------------
package0 event_file filename unicode_string_ptr YES_Mandatory Specifies the location and file name of the log
package0 event_file increment uint64 Not_mandatory Size in MB to grow the file
package0 event_file lazy_create_blob boolean Not_mandatory Create blob upon publishing of first event buffer, not before.
package0 event_file max_file_size uint64 Not_mandatory Maximum file size in MB
package0 event_file max_rollover_files uint32 Not_mandatory Maximum number of files to retain
package0 event_file metadatafile unicode_string_ptr Not_mandatory Not used
***/
Mengonversi kolom target_data dengan DMV SELECT ke XML
Ini DMV SELECT mengembalikan baris data dari target sesi peristiwa aktif Anda. Data ditransmisikan ke XML, yang membuat sel yang dikembalikan dapat dipilih untuk tampilan yang mudah di SSMS.
- Jika sesi acara Anda dihentikan, ini
SELECTakan mengembalikan baris nol. - Anda perlu mengubah nilai klausul pada
WHEREuntuks.name =.
SELECT --C.7
s.name,
t.target_name,
CAST(t.target_data AS XML) AS [XML-Cast]
FROM
sys.dm_xe_session_targets AS t
JOIN sys.dm_xe_sessions AS s
ON s.address = t.event_session_address
WHERE
s.name = '\<Your-Session-Name-Here!>';
Output, satu-satunya baris, termasuk sel XML-nya
Berikut adalah satu-satunya baris yang merupakan output dari sebelumnya SELECT. Kolom XML-Cast berisi string XML yang dipahami SSMS adalah XML. Oleh karena itu, SSMS memahami bahwa ia harus membuat XML-Cast agar sel dapat dipilih.
Untuk eksekusi ini:
- Nilai
s.name =diatur ke sesi peristiwa untuk peristiwa tersebutcheckpoint_begin. - Targetnya adalah ring_buffer.
name target_name XML-Cast
---- ----------- --------
checkpoint_session_ring_buffer2 ring_buffer <RingBufferTarget truncated="0" processingTime="0" totalEventsProcessed="2" eventCount="2" droppedCount="0" memoryUsed="104"><event name="checkpoint_begin" package="sqlserver" timestamp="2016-07-09T01:28:23.508Z"><data name="database_id"><type name="uint32" package="package0" /><value>5</value></data></event><event name="checkpoint_begin" package="sqlserver" timestamp="2016-07-09T01:28:26.975Z"><data name="database_id"><type name="uint32" package="package0" /><value>5</value></data></event></RingBufferTarget>
Output, XML ditampilkan dengan cantik saat sel dipilih
Saat sel XML-Cast dipilih, tampilan cantik berikut ini muncul.
<RingBufferTarget truncated="0" processingTime="0" totalEventsProcessed="2" eventCount="2" droppedCount="0" memoryUsed="104">
<event name="checkpoint_begin" package="sqlserver" timestamp="2016-07-09T01:28:23.508Z">
<data name="database_id">
<type name="uint32" package="package0" />
<value>5</value>
</data>
</event>
<event name="checkpoint_begin" package="sqlserver" timestamp="2016-07-09T01:28:26.975Z">
<data name="database_id">
<type name="uint32" package="package0" />
<value>5</value>
</data>
</event>
</RingBufferTarget>
Gunakan perintah SELECT dalam fungsi untuk mengambil data event_file dari drive disk.
Misalkan sesi peristiwa Anda mengumpulkan beberapa data dan kemudian dihentikan. Jika sesi Anda didefinisikan untuk menggunakan target event_file, Anda masih dapat mengambil data dengan memanggil fungsi sys.fn_xe_target_read_file.
- Anda harus mengedit jalur dan nama file Anda ke dalam parameter panggilan fungsi, sebelum Anda menjalankan ini
SELECT.- Jangan perhatikan digit tambahan yang disematkan sistem SQL ke dalam aktual Anda. Nama file XEL setiap kali Anda memulai ulang sesi Anda. Cukup berikan nama akar dan ekstensi normal.
SELECT --C.8
f.module_guid,
f.package_guid,
f.object_name,
f.file_name,
f.file_offset,
CAST(f.event_data AS XML) AS [Event-Data-As-XML]
FROM
sys.fn_xe_file_target_read_file(
'\<YOUR-PATH-FILE-NAME-ROOT-HERE!>*.xel',
--'c:\temp\\Checkpoint_Begins_ES*.xel', -- Example.
NULL, NULL, NULL
) AS f;
Output, baris yang dikembalikan oleh SELECT FROM fungsi
Selanjutnya adalah baris yang dikembalikan oleh fungsi sebelumnya SELECT FROM . Kolom Event-Data-As-XML XML berisi data yang secara khusus berkaitan dengan kejadian peristiwa.
module_guid package_guid object_name file_name file_offset Event-Data-As-XML
----------- ------------ ----------- --------- ----------- -----------------
D5149520-6282-11DE-8A39-0800200C9A66 03FDA7D0-91BA-45F8-9875-8B6DD0B8E9F2 checkpoint_begin c:\temp\\Checkpoint_Begins_ES_20160615bb-_0_131125086091700000.xel 5120 <event name="checkpoint_begin" package="sqlserver" timestamp="2016-07-09T03:30:14.023Z"><data name="database_id"><value>5</value></data><action name="session_id" package="sqlserver"><value>60</value></action><action name="database_id" package="sqlserver"><value>5</value></action></event>
D5149520-6282-11DE-8A39-0800200C9A66 03FDA7D0-91BA-45F8-9875-8B6DD0B8E9F2 checkpoint_end c:\temp\\Checkpoint_Begins_ES_20160615bb-_0_131125086091700000.xel 5120 <event name="checkpoint_end" package="sqlserver" timestamp="2016-07-09T03:30:14.025Z"><data name="database_id"><value>5</value></data></event>
D5149520-6282-11DE-8A39-0800200C9A66 03FDA7D0-91BA-45F8-9875-8B6DD0B8E9F2 checkpoint_begin c:\temp\\Checkpoint_Begins_ES_20160615bb-_0_131125086091700000.xel 5632 <event name="checkpoint_begin" package="sqlserver" timestamp="2016-07-09T03:30:17.704Z"><data name="database_id"><value>5</value></data><action name="session_id" package="sqlserver"><value>60</value></action><action name="database_id" package="sqlserver"><value>5</value></action></event>
D5149520-6282-11DE-8A39-0800200C9A66 03FDA7D0-91BA-45F8-9875-8B6DD0B8E9F2 checkpoint_end c:\temp\\Checkpoint_Begins_ES_20160615bb-_0_131125086091700000.xel 5632 <event name="checkpoint_end" package="sqlserver" timestamp="2016-07-09T03:30:17.709Z"><data name="database_id"><value>5</value></data></event>
Output, satu sel XML
Berikut adalah konten sel XML pertama, dari kumpulan baris yang dikembalikan sebelumnya.
<event name="checkpoint_begin" package="sqlserver" timestamp="2016-07-09T03:30:14.023Z">
<data name="database_id">
<value>5</value>
</data>
<action name="session_id" package="sqlserver">
<value>60</value>
</action>
<action name="database_id" package="sqlserver">
<value>5</value>
</action>
</event>