Mulai Cepat: Acara yang Diperluas
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Extended Events adalah fitur pemantauan performa ringan yang memungkinkan pengguna mengumpulkan data untuk memantau dan memecahkan masalah. Dengan menggunakan Extended Events, Anda dapat melihat detail operasi internal mesin database yang relevan untuk tujuan pemantauan dan pemecahan masalah performa. Untuk mempelajari selengkapnya tentang Acara yang Diperluas, lihat Gambaran umum Kejadian yang Diperluas.
Artikel ini bertujuan untuk membantu administrator, teknisi, dan pengembang SQL yang baru menggunakan Extended Events, dan yang ingin mulai menggunakannya dan melihat data peristiwa hanya dalam beberapa menit.
Extended Events juga dikenal sebagai XEvents, dan terkadang hanya XE.
Setelah membaca artikel ini, Anda dapat:
- Lihat cara membuat sesi peristiwa di SQL Server Management Studio (SSMS), dengan contoh cuplikan layar.
- Menghubungkan cuplikan layar dengan pernyataan Transact-SQL yang setara.
- Pahami secara rinci istilah dan konsep di balik antarmuka pengguna SSMS dan pernyataan T-SQL XEvents.
- Pelajari cara menguji sesi peristiwa Anda.
- Pahami hasil sesi, termasuk:
- Opsi yang tersedia untuk penyimpanan hasil
- Hasil yang diproses versus mentah
- Alat untuk melihat hasilnya dengan cara yang berbeda dan pada skala waktu yang berbeda
- Lihat bagaimana Anda dapat mencari dan menemukan semua peristiwa yang tersedia.
- Pahami hubungan di antara tampilan sistem Extended Events.
Tip
Untuk informasi selengkapnya tentang Peristiwa yang Diperluas di Azure SQL Database, termasuk sampel kode, lihat Peristiwa yang Diperluas di Azure SQL Database dan Azure SQL Managed Instance.
Prasyarat
Untuk memulai, Anda perlu:
- Unduh SQL Server Management Studio (SSMS). Sebaiknya gunakan versi terbaru SSMS dengan peningkatan dan perbaikan terbaru.
- Pastikan akun Anda telah
CREATE ANY EVENT SESSION
(diperkenalkan di SQL Server 2022), atauALTER ANY EVENT SESSION
izin server. - Selain itu, saat menggunakan SSMS dan untuk melihat sesi yang dibuat, login memerlukan izin
VIEW SERVER PERFORMANCE STATE
.
Detail tentang keamanan dan izin yang terkait dengan Kejadian yang Diperluas tersedia di akhir artikel ini di Lampiran.
Acara yang Diperluas di SSMS
SSMS menyediakan antarmuka pengguna (UI) yang berfungsi penuh untuk Kejadian yang Diperluas. Banyak skenario dapat dicapai menggunakan UI ini, tanpa harus menggunakan T-SQL atau tampilan manajemen dinamis (DMV).
Di bagian berikutnya Anda dapat melihat langkah-langkah UI untuk membuat sesi Extended Events, dan untuk melihat data yang dilaporkannya. Setelah melalui langkah-langkah langsung atau meninjaunya dalam artikel ini, Anda dapat membaca tentang konsep yang terlibat dalam langkah-langkah untuk pemahaman yang lebih mendalam.
Membuat sesi peristiwa di SSMS
Saat membuat sesi Extended Events, Anda akan memberi tahu sistem:
- Peristiwa mana yang Anda minati.
- Bagaimana Anda ingin sistem melaporkan data kepada Anda.
Demonstrasi membuka dialog Sesi Baru, memperlihatkan cara menggunakan empat halamannya, bernama:
- Umum
- Acara
- Penyimpanan Data
- Lanjutan
Teks dan cuplikan layar pendukung dapat sedikit berbeda dalam versi SSMS Anda, tetapi harus tetap relevan untuk penjelasan konsep dasar.
Menyambungkan ke instans mesin database. Extended Events didukung dimulai dengan SQL Server 2014 (12.x), di Azure SQL Database, dan Azure SQL Managed Instance.
Di Object Explorer, pilih Manajemen > Acara yang Diperluas. Di Azure SQL Database, sesi peristiwa dilingkup database, sehingga opsi Kejadian yang Diperluas ditemukan di bawah setiap database, bukan di bawah Manajemen.
Klik kanan pada folder Sesi dan pilih Sesi Baru.... Dialog Sesi Baru... lebih disukai untuk Panduan Sesi Baru, meskipun keduanya serupa.
Tip
Dalam langkah-langkah tutorial ini, jangan tekan OK sampai Anda telah maju melalui keempat halaman: Umum, Peristiwa, Penyimpanan Data, dan Tingkat Lanjut.
Pilih halaman Umum . Kemudian ketik
YourSession
, atau nama apa pun yang Anda suka, ke dalam kotak teks Nama sesi. Jangan pilih OK belum, karena Anda masih perlu memasukkan beberapa detail di halaman lain.Pilih halaman Peristiwa .
Di area Pustaka peristiwa, di daftar dropdown, pilih Nama peristiwa saja.
- Ketik
sql_statement
ke dalam kotak teks. Ini memfilter daftar untuk hanya menampilkan peristiwa dengansql_statement
dalam nama. - Gulir dan pilih peristiwa bernama
sql_statement_completed
. - Pilih tombol
>
panah kanan untuk memindahkan peristiwa ke kotak Acara yang dipilih.
- Ketik
Tetap berada di halaman Peristiwa , pilih tombol Konfigurasikan . Ini membuka kotak Opsi konfigurasi peristiwa untuk peristiwa yang dipilih.
Pilih tab Filter (Predikat). Selanjutnya, pilih baris filter baru yang berbuah Klik di sini untuk menambahkan klausa. Dalam tutorial ini, akan mengonfigurasi filter ini (juga dikenal sebagai predikat) untuk mengambil semua
SELECT
pernyataan denganHAVING
klausa.Di daftar dropdown Bidang, pilih
sqlserver.sql_text
.- Untuk Operator, pilih
like_i_sql_unicode_string
. Di sini,i
atas nama operator berarti nsensitif huruf besar/kecil. - Untuk Nilai, ketik
%SELECT%HAVING%
. Di sini, tanda persen (%
) adalah kartubebas yang berdiri untuk string karakter apa pun.
Catatan
Dalam nama dua bagian bidang, sqlserver adalah nama paket dan sql_text adalah nama bidang. Peristiwa yang kita pilih sebelumnya, sql_statement_completed, harus berada dalam paket yang sama dengan bidang yang kita pilih.
- Untuk Operator, pilih
Pilih halaman Penyimpanan Data.
Di area Target, pilih baris Jenis Target baru yang mengatakan Klik di sini untuk menambahkan target. Dalam tutorial ini, kita akan menulis data peristiwa yang diperluas yang diambil ke file peristiwa. Ini berarti data peristiwa disimpan dalam file yang dapat kita buka dan lihat nanti. Dimulai dengan SQL Server 2019 (15.x), data peristiwa juga dapat ditulis untuk disimpan di Azure Storage, default di Azure SQL.
- Di daftar dropdown Jenis, pilih
event_file
.
- Di daftar dropdown Jenis, pilih
Di area Properti, ketikkan jalur lengkap dan nama file ke dalam kotak teks Nama file di server. Anda juga dapat menggunakan tombol Telusuri . Ekstensi nama file harus
xel
. Dalam contoh kami, kami menggunakanC:\temp\YourSession_Target.xel
.Pilih halaman Tingkat Lanjut . Secara default, target .xel dari sesi kejadian yang diperluas ini harus memiliki dampak minimal atau tidak pada performa server, tetapi pengaturan ini pada halaman Tingkat Lanjut dapat digunakan untuk meningkatkan atau mengurangi sumber daya dan latensi.
Pilih tombol OK di bagian bawah untuk membuat sesi kejadian ini.
Kembali ke SSMS Object Explorer, buka atau refresh folder Sesi , dan lihat simpul baru untuk sesi peristiwa yang
YourSession
diperluas. Sesi belum dimulai. Dalam tutorial ini, kita akan memulainya nanti.
Mengedit sesi peristiwa di SQL Server Management Directory
Di SQL Server Management Studio Object Explorer, Anda dapat mengedit sesi acara dengan mengklik kanan simpulnya, lalu memilih Properti. Dialog multi-halaman yang sama ditampilkan.
Membuat sesi peristiwa menggunakan T-SQL
Di SQL Server Management Directory, Anda dapat membuat skrip T-SQL untuk membuat sesi peristiwa Anda sebagai berikut:
- Klik kanan pada simpul sesi peristiwa, lalu pilih Sesi Skrip sebagai > BUAT ke > Clipboard.
- Tempelkan ke editor teks apa pun.
Berikut adalah pernyataan T-SQL yang dihasilkan CREATE EVENT SESSION
untuk YourSession
:
CREATE EVENT SESSION [YourSession]
ON SERVER -- For SQL Server and Azure SQL Managed Instance
-- ON DATABASE -- For Azure SQL Database
ADD EVENT sqlserver.sql_statement_completed
(
ACTION(sqlserver.sql_text)
WHERE
( [sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text], N'%SELECT%HAVING%')
)
)
ADD TARGET package0.event_file
(SET filename=N'C:\temp\YourSession_Target.xel');
GO
Catatan
Di Azure SQL Database, gunakan ON DATABASE
alih-alih ON SERVER
.
DROP bersyarah dari sesi peristiwa
CREATE EVENT SESSION
Sebelum pernyataan, Anda dapat menjalankan DROP EVENT SESSION
pernyataan secara kondisional, jika sesi dengan nama yang sama sudah ada. Ini akan menghapus sesi yang ada. Tanpa ini, mencoba membuat sesi dengan nama yang sama menyebabkan kesalahan.
IF EXISTS (SELECT *
FROM sys.server_event_sessions
WHERE name = 'YourSession')
BEGIN
DROP EVENT SESSION YourSession
ON SERVER;
END
GO
Memulai dan menghentikan sesi peristiwa menggunakan T-SQL
Saat Anda membuat sesi peristiwa, defaultnya adalah agar tidak mulai berjalan secara otomatis. Anda dapat memulai atau menghentikan sesi acara kapan saja dengan menggunakan pernyataan T-SQL berikut ALTER EVENT SESSION
.
ALTER EVENT SESSION [YourSession]
ON SERVER
STATE = START; -- STOP;
Anda memiliki opsi untuk mengonfigurasi sesi peristiwa untuk memulai secara otomatis saat instans mesin database dimulai. STARTUP STATE = ON
Lihat kata kunci di CREATE EVENT SESSION
.
UI SQL Server Management Studio menawarkan kotak centang yang sesuai, Mulai sesi peristiwa di startup server, pada halaman Umum Sesi > Baru.
Menguji sesi peristiwa
Uji sesi peristiwa Anda dengan langkah-langkah berikut:
- Di Object Explorer, klik kanan simpul sesi peristiwa Anda, lalu pilih Mulai Sesi.
- Saat tersambung ke server yang sama (atau database yang sama di Azure SQL Database) tempat Anda membuat sesi peristiwa, jalankan pernyataan berikut beberapa
SELECT...HAVING
kali. Pertimbangkan untuk mengubah nilai dalamHAVING
klausul untuk setiap eksekusi, beralih antara 2 dan 3. Ini memungkinkan Anda untuk melihat perbedaan dalam hasil. - Klik kanan simpul sesi Anda, dan pilih Hentikan Sesi.
- Baca subbagian berikutnya tentang cara MEMILIH dan melihat hasilnya.
SELECT c.name,
COUNT(*) AS [Count-Per-Column-Repeated-Name]
FROM sys.syscolumns AS c
INNER JOIN sys.sysobjects AS o
ON o.id = c.id
WHERE o.type = 'V'
AND c.name LIKE '%event%'
GROUP BY c.name
HAVING Count(*) >= 3 --2 -- Try both values during session.
ORDER BY c.name;
Untuk kelengkapan, berikut adalah contoh output dari sebelumnya SELECT...HAVING
.
/* Approximate output, 6 rows, all HAVING Count >= 3:
name Count-Per-Column-Repeated-Name
--------------------- ------------------------------
event_group_type 4
event_group_type_desc 4
event_session_address 5
event_session_id 5
is_trigger_event 4
trace_event_id 3
*/
Menampilkan data sesi peristiwa sebagai XML
Di jendela kueri di SSMS, jalankan pernyataan berikut SELECT
untuk melihat data peristiwa yang diambil oleh sesi Anda. Setiap baris mewakili satu kemunculan peristiwa. Mengubah CAST(... AS xml)
tipe data kolom dari nvarchar ke xml. Ini memungkinkan Anda memilih nilai kolom, untuk membukanya di jendela baru agar lebih mudah dibaca.
Catatan
Target event_file
selalu menyisipkan bagian numerik dalam xel
nama file. Sebelum dapat menjalankan kueri berikut, Anda harus menyalin nama xel
lengkap file aktual yang menyertakan bagian numerik ini, dan menempelkannya ke SELECT
dalam pernyataan. Dalam contoh berikut, bagian numerik adalah _0_131085363367310000
.
SELECT object_name,
file_name,
file_offset,
event_data,
'CLICK_NEXT_CELL_TO_BROWSE_XML RESULTS!' AS [CLICK_NEXT_CELL_TO_BROWSE_XML_RESULTS],
CAST(event_data AS XML) AS [event_data_XML]
-- TODO: In the SSMS results grid, click this XML cell
FROM sys.fn_xe_file_target_read_file(
'C:\Temp\YourSession_Target_0_131085363367310000.xel', NULL, NULL, NULL
);
Kueri ini menyediakan dua cara untuk menampilkan hasil lengkap dari baris peristiwa tertentu:
Jalankan SELECT di SSMS, lalu pilih sel di
event_data_XML
kolom .Salin string XML dari sel di
event_data
kolom . Tempelkan ke editor teks apa pun seperti Notepad, dan simpan file dengan ekstensixml
. Kemudian buka file di browser atau editor yang mampu menampilkan data XML.
Data peristiwa di XML
Selanjutnya kita melihat bagian dari hasil, yang dalam format XML. XML berikut diedit untuk brevity. <data name="row_count">
menampilkan nilai 6
, yang cocok dengan enam baris hasil kami yang ditampilkan sebelumnya. Dan kita bisa melihat seluruh SELECT
pernyataan.
<event name="sql_statement_completed" package="sqlserver" timestamp="2016-05-24T04:06:08.997Z">
<data name="duration">
<value>111021</value>
</data>
<data name="cpu_time">
<value>109000</value>
</data>
<data name="physical_reads">
<value>0</value>
</data>
<data name="last_row_count">
<value>6</value>
</data>
<data name="offset">
<value>0</value>
</data>
<data name="offset_end">
<value>584</value>
</data>
<data name="statement">
<value>SELECT c.name,
COUNT(*) AS [Count-Per-Column-Repeated-Name]
FROM sys.syscolumns AS c
INNER JOIN sys.sysobjects AS o
ON o.id = c.id
WHERE o.type = 'V'
AND c.name LIKE '%event%'
GROUP BY c.name
HAVING Count(*) >= 3 --2 -- Try both values during session.
ORDER BY c.name;</value>
</data>
</event>
Menampilkan data sesi peristiwa di SSMS
Ada beberapa fitur tingkat lanjut di UI SSMS yang dapat Anda gunakan untuk melihat data yang diambil oleh sesi peristiwa. Untuk informasi selengkapnya, lihat Menampilkan data peristiwa di SQL Server Management Studio.
Anda mulai dengan opsi menu konteks berlabel Lihat Data Target dan Tonton Data Langsung.
Menampilkan data target
Di Object Explorer SSMS, Anda dapat mengklik kanan simpul target yang ada di bawah simpul sesi peristiwa Anda, misalnya, package0.event_counter. Di menu konteks, pilih Tampilkan Data Target. SSMS menampilkan data.
Tampilan tidak diperbarui karena peristiwa baru terjadi dalam sesi. Tetapi Anda dapat memilih Tampilkan Data Target lagi.
Tonton data langsung
Di SSMS Object Explorer, Anda dapat mengklik kanan simpul sesi peristiwa Anda. Di menu konteks, pilih Tonton Data Langsung. SSMS menampilkan data masuk karena terus tiba secara real time.
Istilah dan konsep dalam Acara yang Diperluas
Tabel berikut mencantumkan istilah yang digunakan untuk Acara yang Diperluas, dan menjelaskan artinya.
Persyaratan | Deskripsi |
---|---|
event session |
Konstruksi yang berpusat di sekitar satu atau beberapa peristiwa, ditambah item pendukung seperti tindakan adalah target. Pernyataan ini CREATE EVENT SESSION membuat setiap sesi peristiwa. Anda dapat ALTER melakukan sesi acara untuk memulai dan menghentikannya sesering mungkin.Sesi peristiwa terkadang disebut hanya sebagai sesi, ketika konteks mengklarifikasinya berarti sesi peristiwa. Detail lebih lanjut tentang sesi peristiwa dijelaskan dalam: Sesi Acara yang Diperluas. |
event |
Kemunculan tertentu dalam sistem yang ditonton oleh sesi peristiwa aktif. Misalnya, peristiwa mewakili sql_statement_completed saat pernyataan T-SQL tertentu selesai. Kejadian ini dapat melaporkan durasinya dan data lainnya. |
target |
Item yang menerima data output dari peristiwa yang diambil. Target menampilkan data kepada Anda. Contohnya termasuk target yang event_file digunakan sebelumnya dalam mulai cepat ini, dan ring_buffer target yang menyimpan peristiwa terbaru dalam memori.Segala jenis target dapat digunakan untuk sesi peristiwa apa pun. Untuk detailnya, lihat Target untuk Peristiwa yang Diperluas. |
action |
Bidang yang diketahui oleh peristiwa. Data dari bidang dikirim ke target. Bidang tindakan terkait erat dengan filter predikat. |
predicate , atau filter |
Pengujian data di bidang peristiwa, digunakan sehingga hanya subset kejadian yang menarik yang dikirim ke target. Misalnya, filter hanya sql_statement_completed dapat menyertakan kemunculan peristiwa tersebut di mana pernyataan T-SQL berisi string HAVING . |
package |
Pengukur nama yang dilampirkan ke setiap item dalam sekumpulan item yang berpusat di sekitar inti peristiwa. Misalnya, paket dapat memiliki peristiwa tentang teks T-SQL. Satu peristiwa bisa tentang semua T-SQL dalam satu batch. Sementara itu peristiwa lain yang lebih sempit adalah tentang pernyataan T-SQL individual. Selanjutnya, untuk satu pernyataan T-SQL, ada started dan completed peristiwa.Bidang yang sesuai untuk peristiwa juga berada dalam paket dengan peristiwa. Sebagian besar target berada di package0 dan digunakan dengan peristiwa dari banyak paket lain. |
Skenario Peristiwa yang Diperluas dan detail penggunaan
Ada banyak skenario untuk menggunakan Extended Events untuk memantau dan memecahkan masalah mesin database dan beban kerja kueri. Artikel berikut ini menyediakan contoh menggunakan skenario terkait kunci:
- Temukan Objek yang Memiliki Kunci Terbanyak Yang Diambil di Atasnya
- Skenario ini menggunakan target histogram , yang memproses data peristiwa mentah sebelum menampilkannya kepada Anda dalam bentuk ringkasan (bucketized).
- Tentukan Kueri Mana yang Menahan Kunci
- Skenario ini menggunakan target pair_matching , di mana pasangan peristiwa adalah
sqlserver.lock_acquire
dansqlserver.lock_release
.
- Skenario ini menggunakan target pair_matching , di mana pasangan peristiwa adalah
Cara menemukan peristiwa yang tersedia dalam paket
Kueri berikut mengembalikan baris untuk setiap peristiwa yang tersedia yang namanya berisi tiga string sql
karakter . Anda dapat mengedit LIKE
klausa untuk mencari nama peristiwa yang berbeda. Kumpulan hasil juga mengidentifikasi paket yang berisi peristiwa.
SELECT -- Find an event you want.
p.name AS [Package-Name],
o.object_type,
o.name AS [Object-Name],
o.description AS [Object-Descr],
p.guid AS [Package-Guid]
FROM sys.dm_xe_packages AS p
INNER JOIN sys.dm_xe_objects AS o
ON p.guid = o.package_guid
WHERE o.object_type = 'event' --'action' --'target'
AND p.name LIKE '%'
AND o.name LIKE '%sql%'
ORDER BY p.name,
o.object_type,
o.name;
Contoh hasil berikut menunjukkan baris yang dikembalikan, dipivot di sini ke dalam format column name = value
. Data berasal dari sql_statement_completed
peristiwa yang digunakan dalam contoh langkah-langkah sebelumnya. Deskripsi objek (peristiwa, dalam contoh ini) berfungsi sebagai string dokumentasi.
Package-Name = sqlserver
object_type = event
Object-Name = sql_statement_completed
Object-Descr = Occurs when a Transact-SQL statement has completed.
Package-Guid = 655FD93F-3364-40D5-B2BA-330F7FFB6491
Menemukan peristiwa menggunakan UI SSMS
Opsi lain untuk menemukan peristiwa berdasarkan nama adalah menggunakan dialog pustaka Peristiwa Sesi > > Baru yang ditampilkan dalam cuplikan layar sebelumnya. Anda dapat mengetikkan nama peristiwa parsial dan menemukan semua nama peristiwa yang cocok.
Kelas peristiwa SQL Trace
Deskripsi penggunaan Extended Events dengan kelas peristiwa SQL Trace dan kolom tersedia di: Lihat Extended Events Equivalents to SQL Trace Event Classes.
Aktivitas Pelacakan untuk Windows (ETW)
Deskripsi penggunaan Extended Events dengan Event Tracing for Windows (ETW) tersedia di:
- Pelacakan Peristiwa untuk target Windows
- Memantau Aktivitas Sistem Menggunakan Kejadian yang Diperluas
Sesi peristiwa sistem
Di SQL Server dan Azure SQL Managed Instance, beberapa sesi peristiwa sistem dibuat secara default dan dikonfigurasi untuk memulai saat mesin database dimulai. Seperti kebanyakan sesi peristiwa, mereka mengonsumsi sejumlah kecil sumber daya dan tidak secara material memengaruhi performa beban kerja. Microsoft menyarankan agar sesi ini tetap diaktifkan dan berjalan. Sesi kesehatan, terutama sesi system_health , sering berguna untuk pemantauan dan pemecahan masalah.
Anda dapat melihat sesi peristiwa ini di Object Explorer SSMS di bawah Manajemen > Sesi Peristiwa > yang Diperluas. Misalnya, di SQL Server, sesi peristiwa sistem ini adalah:
AlwaysOn_health
system_health
telemetry_events
Penyedia PowerShell
Anda dapat mengelola Extended Events dengan menggunakan penyedia PowerShell SQL Server. Untuk informasi selengkapnya, lihat Menggunakan Penyedia PowerShell untuk Kejadian yang Diperluas.
Tampilan sistem
Tampilan sistem untuk Acara yang Diperluas meliputi:
- Tampilan katalog: untuk informasi tentang sesi peristiwa yang ditentukan oleh
CREATE EVENT SESSION
. - Tampilan manajemen dinamis (DMV): untuk informasi tentang sesi peristiwa aktif (dimulai).
SELECT dan JOIN Dari Tampilan Sistem untuk Peristiwa yang Diperluas di SQL Server menyediakan informasi tentang:
- Cara menggabungkan tampilan
- Beberapa kueri yang berguna berdasarkan tampilan ini
- Korelasi antara:
- Lihat kolom
CREATE EVENT SESSION
Klausul- The SSMS UI
Lampiran: Kueri untuk menemukan pemegang izin Kejadian yang Diperluas
Izin yang disebutkan dalam artikel ini adalah:
ALTER ANY EVENT SESSION
VIEW SERVER STATE
CONTROL SERVER
Pernyataan berikut SELECT...UNION ALL
mengembalikan baris yang menunjukkan siapa yang memiliki izin yang diperlukan untuk membuat sesi peristiwa dan mengkueri tampilan katalog sistem untuk Kejadian yang Diperluas.
-- Ascertain who has the permissions listed in the ON clause.
-- 'CONTROL SERVER' permission includes all lower permissions like
-- 'ALTER ANY EVENT SESSION' and 'VIEW SERVER STATE'.
SELECT 'Owner-is-Principal' AS [Type-That-Owns-Permission],
NULL AS [Role-Name],
prin.name AS [Owner-Name],
PERM.permission_name COLLATE Latin1_General_CI_AS_KS_WS AS [Permission-Name]
FROM sys.server_permissions AS PERM
INNER JOIN sys.server_principals AS prin
ON prin.principal_id = PERM.grantee_principal_id
WHERE PERM.permission_name IN (
'CREATE ANY EVENT SESSION',
'ALTER ANY EVENT SESSION',
'VIEW SERVER PERFORMANCE STATE',
'VIEW SERVER STATE',
'CONTROL SERVER'
)
UNION ALL
-- Plus check for members of the 'sysadmin' fixed server role,
-- because 'sysadmin' includes the 'CONTROL SERVER' permission.
SELECT 'Owner-is-Role',
prin.name, -- [Role-Name]
CAST((IsNull(pri2.name, N'No members')) AS NVARCHAR(128)),
NULL
FROM sys.server_role_members AS rolm
RIGHT JOIN sys.server_principals AS prin
ON prin.principal_id = rolm.role_principal_id
LEFT JOIN sys.server_principals AS pri2
ON rolm.member_principal_id = pri2.principal_id
WHERE prin.name = 'sysadmin';
fungsi HAS_PERMS_BY_NAME
Pernyataan berikut SELECT
melaporkan izin Anda. Ini bergantung pada fungsi bawaan HAS_PERMS_BY_NAME.
Selanjutnya, jika Anda memiliki wewenang untuk sementara meniru login lain, Anda dapat membatalkan komentar EXECUTE AS dan REVERT
pernyataan, untuk melihat apakah login lain memegang ALTER ANY EVENT SESSION
izin.
--EXECUTE AS LOGIN = 'LoginNameHere';
SELECT HAS_PERMS_BY_NAME(NULL, NULL, 'ALTER ANY EVENT SESSION');
--REVERT;