Mulai Cepat: Peristiwa Extended di SQL Server

Berlaku untuk:yes SQL Server (semua versi yang didukung)

Extended Events adalah sistem pemantauan performa ringan yang memungkinkan pengguna mengumpulkan data yang diperlukan untuk memantau dan memecahkan masalah dalam SQL Server. Lihat Gambaran umum Extended Events untuk mempelajari selengkapnya tentang arsitektur acara yang diperluas. Artikel ini bertujuan untuk membantu pengembang SQL yang baru menggunakan acara yang diperluas, dan yang ingin membuat sesi acara hanya dalam beberapa menit. Dengan menggunakan Extended Events, Anda dapat melihat detail tentang operasi dalam sistem SQL dan aplikasi Anda. Saat Anda membuat sesi Extended Events, Anda memberi tahu sistem:

  • Kejadian mana yang Anda minati.
  • Bagaimana Anda ingin sistem melaporkan data kepada Anda.

Artikel ini melakukan hal berikut:

  • Menggunakan cuplikan layar untuk mengilustrasikan klik di SSMS.exe yang membuat sesi peristiwa.
  • Menghubungkan cuplikan layar dengan pernyataan Transact-SQL yang setara.
  • Menjelaskan secara rinci istilah dan konsep di balik klik dan T-SQL untuk sesi peristiwa.
  • Menunjukkan cara menguji sesi peristiwa Anda.
  • Menjelaskan alternatif sekeliling hasil:
    • Storage mengambil hasil.
    • Hasil yang diproses versus mentah.
    • Alat untuk melihat hasilnya dengan cara yang berbeda dan pada skala waktu yang berbeda.
  • Memperlihatkan bagaimana Anda dapat mencari dan menemukan semua peristiwa yang tersedia.
  • Menyediakan kunci primer dan hubungan kunci asing yang implisit di antara tampilan manajemen dinamis (DMV) untuk Peristiwa yang Diperluas.
  • Menjelaskan apa lagi yang harus dipelajari dalam artikel terkait.

Blog dan percakapan informal lainnya terkadang merujuk ke Extended Events dengan singkatan XEvents.

Catatan

Untuk informasi tentang peristiwa yang diperluas di Azure SQL Database, termasuk sampel kode, lihat Acara yang Diperluas di SQL Database.

Persiapan sebelum demo

Preliminaries berikut akan diperlukan bagi Anda untuk benar-benar melakukan demonstrasi yang akan datang.

  1. Unduh SQL Server Management Studio (SSMS)

    Setiap bulan Anda harus menginstal pembaruan bulanan terbaru SSMS.

  2. Masuk ke Microsoft SQL Server 2014 atau yang lebih tinggi.

  3. Pastikan akun Anda memiliki izin serverdari UBAH SESI PERISTIWA APA PUN.

Jika tertarik, detail selengkapnya tentang keamanan dan izin yang terkait dengan peristiwa yang diperluas tersedia di akhir artikel ini di Lampiran.

Demo integrasi SSMS

SSMS.exe menyediakan antarmuka pengguna (UI) yang sangat baik untuk peristiwa yang diperluas. UI sangat bagus sehingga banyak pengguna tidak perlu terlibat dengan Extended Events dengan menggunakan Transact-SQL atau tampilan manajemen dinamis (DMV) yang menargetkan peristiwa yang diperluas.

Di bagian ini Anda dapat melihat langkah-langkah UI untuk membuat sesi Extended Events, dan untuk melihat data yang dilaporkannya. Setelah langkah-langkahnya, Anda dapat membaca tentang konsep yang terlibat dalam langkah-langkah untuk pemahaman yang lebih dalam.

Langkah-langkah demo

Anda dapat memahami langkah-langkahnya bahkan jika Anda memutuskan untuk tidak melakukannya. Demonstrasi memulai dialog Sesi Baru . Kami memproses empat halamannya bernama:

  • Umum
  • Acara
  • Penyimpanan Data
  • Lanjutan

Teks dan cuplikan layar pendukung dapat menjadi sedikit tidak tepat ketika UI SQL Server Management Studio di-tweak selama berbulan-bulan atau bertahun-tahun. Namun cuplikan layar tetap efektif untuk penjelasan jika perbedaan hanya di bawah umur.

  1. Koneksi dengan SSMS.

  2. Di Object Explorer, klik Manajemen> Peristiwa >yang DiekspektensiSesi Baru. Dialog Sesi Baru lebih disukai daripada Panduan Sesi Baru, meskipun keduanya mirip satu sama lain.

  3. Di kiri atas, klik halaman Umum . Lalu ketik YourSession, atau nama apa pun yang Anda suka, ke dalam kotak teks Nama sesi . Jangan tekan tombol OK, yang hanya datang di akhir demo.

    New Session > General > Session name

  4. Di kiri atas, klik halaman Acara , lalu klik tombol Pilih .

    New Session > Events > Select > Event library, Selected events

  5. Di area Pustaka peristiwa , di daftar drop-down, pilih Nama peristiwa saja.

    • Ke dalam kotak teks, ketik sql, yang memfilter dan mengurangi daftar panjang peristiwa yang tersedia dengan menggunakan operator contains .
    • Gulir dan klik peristiwa bernama sql_statement_completed.
    • Klik tombol > panah kanan untuk memindahkan peristiwa ke kotak Acara yang dipilih .
  6. Tetap berada di halaman Acara , klik tombol Konfigurasikan di ujung kanan.

    Dengan sisi kiri dipotong untuk tampilan yang lebih baik, di cuplikan layar berikut Anda dapat melihat area Opsi konfigurasi peristiwa .

    New Session > Events > Configure > Filter (Predicate) > Field

  7. Klik tab Filter (Predikat) . Selanjutnya, klik Klik di sini untuk menambahkan klausa, untuk tujuan menangkap semua pernyataan SQL SELECT yang memiliki klausa HAVING.

  8. Di daftar drop-down Bidang , dan pilih sqlserver.sql_text.

    • Untuk Operator pilih operator LIKE.
    • Untuk Tipe nilai di %SELECT%HAVING%.

    Catatan

    Dalam nama dua bagian ini, 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.

  9. Di kiri atas, klik halaman Storage Data.

  10. Di area Target , klik Klik di sini untuk menambahkan target.

    • Di daftar drop-down Jenis , pilih event_file.
    • Ini berarti data peristiwa akan disimpan dalam file yang dapat kita lihat.

    Catatan

    Anda tidak dapat menggunakan Azure Blob Storage sebagai target penyimpanan data dalam instans SQL Server lokal.

    New Session > Data Storage > Targets > Type > event_file

  11. Di area Properti , ketikkan jalur lengkap dan nama file ke dalam kotak teks Nama file di server .

    • Ekstensi nama file harus .xel.
    • Tes kecil kami akan membutuhkan kurang dari 1 MB ukuran file.

    New Session > Advanced > Maximum dispatch latency > OK

  12. Di kiri atas, klik halaman Tingkat Lanjut .

    • Kurangi latensi pengiriman maksimum menjadi 3 detik.
    • Terakhir, klik tombol OK di bagian bawah.
  13. Kembali ke Object Explorer, perluas ManagementSessions>, dan lihat simpul baru untuk YourSession.

    Node for your new event session named YourSession, in the Object Explorer, under Management > Extended Events > Sessions

Mengedit sesi acara Anda

Di Object Explorer SQL Server Management Studio, Anda dapat mengedit sesi acara dengan mengklik kanan simpulnya, lalu mengklik Properti. Dialog multi-halaman yang sama ditampilkan.

T-SQL terkait untuk sesi acara Anda

Anda menggunakan UI SQL Server Management Studio untuk menghasilkan skrip T-SQL yang membuat sesi peristiwa Anda. Anda dapat melihat skrip yang dihasilkan sebagai berikut:

  • Klik kanan simpul sesi Anda, klik Sesi SkripasCREATE>toClipboard>.
  • Tempelkan ke editor teks apa pun.

Selanjutnya adalah pernyataan T-SQL CREATE EVENT SESSION for YourSession, yang dihasilkan oleh klik Anda di UI:

CREATE EVENT SESSION [YourSession]
    ON SERVER
    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:\Junk\YourSession_Target.xel',
        max_file_size = (2),
        max_rollover_files = (2)
    )
    WITH (
        MAX_MEMORY = 2048 KB,
        EVENT_RETENTION_MODE = ALLOW_MULTIPLE_EVENT_LOSS,
        MAX_DISPATCH_LATENCY = 3 SECONDS,
        MAX_EVENT_SIZE = 0 KB,
        MEMORY_PARTITION_MODE = NONE,
        TRACK_CAUSALITY = OFF,
        STARTUP_STATE = OFF
    );
GO

Pra-DROP sesi peristiwa

Sebelum pernyataan CREATE EVENT SESSION, Anda mungkin ingin mengeluarkan SESI PERISTIWA DROP secara kondisional jika nama sudah ada.

IF EXISTS (SELECT *
      FROM sys.server_event_sessions
      WHERE name = 'YourSession')
BEGIN
    DROP EVENT SESSION YourSession
          ON SERVER;
END
go

UBAH untuk memulai dan menghentikan sesi peristiwa

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 ALTER EVENT SESSION berikut.

ALTER EVENT SESSION [YourSession]
      ON SERVER
    --ON DATABASE
    STATE = START;   -- STOP;

Anda memiliki opsi untuk memberi tahu sesi peristiwa untuk memulai secara otomatis saat instans SQL Server dimulai. Lihat kata kunci STARTUP STATE = ON di CREATE EVENT SESSION.

  • UI SSMS menawarkan kotak centang terkait di halaman SessionGeneral>Baru.

Menguji sesi acara Anda

Uji sesi acara Anda dengan langkah-langkah sederhana ini:

  1. Di Object Explorer SSMS, klik kanan simpul sesi peristiwa Anda, lalu klik Mulai Sesi.
  2. Jalankan pernyataan berikut SELECT...HAVING beberapa kali.
    • Idealnya Anda dapat mengubah HAVING Count nilai antara dua eksekusi, beralih antara 2 dan 3. Ini memungkinkan Anda untuk melihat perbedaan dalam hasil.
  3. Klik kanan simpul sesi Anda, lalu klik Hentikan Sesi.
  4. Baca subbagian berikutnya tentang cara MEMILIH dan melihat hasilnya.
SELECT
        c.name,
        Count(*)  AS [Count-Per-Column-Repeated-Name]
    FROM
             sys.syscolumns  AS c
        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;

Hanya untuk kelengkapan, berikut adalah perkiraan output dari SELECT sebelumnya... MEMILIKI.

/*** 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
***/

PILIH hasil lengkap sebagai XML

Di SSMS, jalankan T-SQL SELECT berikut untuk mengembalikan hasil di mana setiap baris menyediakan data tentang satu kejadian. CAST AS XML memudahkan untuk menampilkan hasilnya.

Catatan

Sistem peristiwa selalu menambahkan angka panjang ke nama file .xel event_file yang Anda tentukan. Sebelum Anda dapat menjalankan SELECT berikut dari file, Anda harus menyalin nama lengkap yang diberikan oleh sistem, dan menempelkannya ke SELECT.

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 ssms.exe results grid, double-click this xml cell!
    FROM
        sys.fn_xe_file_target_read_file(
            'C:\Junk\YourSession_Target_0_131085363367310000.xel',
            null, null, null
        );

SELECT sebelumnya memberi Anda dua cara untuk melihat hasil lengkap dari baris peristiwa tertentu:

  • Jalankan SELECT di SSMS, lalu klik sel di kolom event_data_XML . Ini sangat berguna.
  • Salin string XML panjang dari sel di kolom event_data . Tempelkan ke editor teks sederhana seperti Notepad.exe, dan simpan string dalam file dengan ekstensi .XML. Kemudian buka file .XML dengan browser.

Tampilan hasil untuk satu peristiwa

Selanjutnya kita melihat bagian dari hasil, yang dalam format XML. XML di sini diedit di sini untuk membuatnya lebih pendek untuk ditampilkan. Perhatikan bahwa <data name="row_count"> menampilkan nilai 6, yang cocok dengan 6 baris hasil kami yang ditampilkan sebelumnya. Dan kita dapat melihat seluruh pernyataan SELECT.

<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
        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(*) &gt;= 3   --2     -- Try both values during session.
    ORDER BY
        c.name</value>
  </data>
</event>

SSMS untuk menampilkan hasil

Ada beberapa fitur canggih di UI SSMS yang dapat Anda gunakan untuk melihat data yang diambil dari peristiwa yang diperluas. Detailnya ada di:

Dasar-dasar dimulai dengan opsi menu konteks berlabel Lihat Data Target dan Tonton Data Langsung.

Lihat Data Target

Di Object Explorer SSMS, Anda dapat mengklik kanan simpul target yang ada di bawah simpul sesi peristiwa Anda. Di menu konteks, Anda mengklik Tampilkan Data Target. SSMS menampilkan data.

Tampilan tidak diperbarui karena data baru dilaporkan oleh peristiwa. Tetapi Anda dapat mengklik Tampilkan Data Target lagi.

View Target Data, in SSMS, Management > Extended Events > Sessions > YourSession > package0.event_file, right-click

Tonton Data Langsung

Di Object Explorer SSMS, Anda dapat mengklik kanan simpul sesi peristiwa Anda. Di menu konteks, Klik Tonton Data Langsung. SSMS menampilkan data masuk karena terus tiba secara real time.

Watch Live Data, in SSMS, Management > Extended Events > Sessions > YourSession, right-click

Skenario

Ada skenario yang tak terhitung jumlahnya untuk penggunaan Extended Events yang efektif. Artikel berikut ini menyediakan contoh skenario yang melibatkan kunci yang diambil selama kueri.

Skenario khusus untuk sesi peristiwa yang ditujukan untuk menilai kunci dijelaskan dalam artikel berikut. Artikel ini juga menunjukkan beberapa teknik canggih, seperti menggunakan @dbid, dan menggunakan dinamis EXECUTE (@YourSqlString):

Istilah dan konsep dalam Acara yang Diperluas

Tabel berikut ini mencantumkan istilah yang digunakan untuk Acara yang Diperluas, dan menjelaskan maknanya.

Persyaratan Deskripsi
sesi acara Konstruksi yang berpusat di sekitar satu atau beberapa peristiwa, ditambah item pendukung seperti tindakan adalah target. Pernyataan CREATE EVENT SESSION membuat setiap sesi peristiwa. Anda dapat MENGUBAH 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: SQL Server Sesi Acara yang Diperluas.
peristiwa Kejadian tertentu dalam sistem yang diawasi oleh sesi peristiwa aktif.

Misalnya, peristiwa sql_statement_completed mewakili 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 event_file, dan sepupu ringan yang berguna di ring_buffer memori. Target histogram fancier melakukan beberapa pemrosesan data Anda sebelum menampilkannya.

Target apa pun dapat digunakan untuk sesi peristiwa apa pun. Untuk detailnya, lihat Target untuk Peristiwa yang Diperluas di SQL Server.
tindakan Bidang yang diketahui oleh peristiwa. Data dari bidang dikirim ke target. Bidang tindakan terkait erat dengan filter predikat.
filter predikat Pengujian data di bidang peristiwa, digunakan sehingga hanya subset kejadian menarik yang dikirim ke target.

Misalnya, filter hanya dapat menyertakan kejadian peristiwa sql_statement_completed di mana pernyataan T-SQL berisi string HAVING.
paket Kualifikasi nama yang dilampirkan ke setiap item dalam sekumpulan item yang berpusat di sekitar inti peristiwa.

Misalnya, paket mungkin memiliki peristiwa tentang teks T-SQL. Satu peristiwa bisa tentang semua T-SQL dalam batch yang dibatasi GO. Sementara itu peristiwa lain yang lebih sempit adalah tentang pernyataan T-SQL individu. Selanjutnya, untuk satu pernyataan T-SQL, ada peristiwa mulai dan selesai.

Bidang yang sesuai untuk peristiwa juga ada dalam paket dengan peristiwa. Sebagian besar target berada dalam paket0 dan digunakan dengan peristiwa dari banyak paket lain.

Cara menemukan peristiwa yang tersedia dalam paket

T-SQL SELECT berikut mengembalikan baris untuk setiap peristiwa yang tersedia yang namanya berisi tiga string karakter 'sql'. Tentu saja, Anda dapat mengedit nilai LIKE untuk mencari nama peristiwa yang berbeda. Baris juga memberi nama 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
        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;

Tampilan berikut menunjukkan baris yang dikembalikan, diedit di sini ke dalam format nama kolom = nilai. Data berasal dari peristiwa sql-statement_completed yang digunakan dalam langkah-langkah contoh sebelumnya. Kalimat untuk kolom Object-Descr sangat membantu.

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

Opsi pencarian lain adalah menggunakan UI SSMS untuk dialog pustaka SessionEventsEvent>>Baru yang ditampilkan dalam cuplikan layar sebelumnya.

SQL Lacak kelas peristiwa, dengan acara yang diperluas

Deskripsi penggunaan acara yang diperluas dengan SQL Lacak kelas peristiwa dan kolom tersedia di: Lihat Acara yang Diperluas Setara dengan SQL Lacak Kelas Peristiwa

Pelacakan Peristiwa untuk Windows (ETW), dengan peristiwa yang diperluas

Deskripsi penggunaan peristiwa yang diperluas dengan Pelacakan Peristiwa untuk Windows (ETW) tersedia di:

Item tambahan

Bagian ini secara singkat menyebutkan beberapa item lain-lain.

Sesi peristiwa yang diinstal dengan SQL Server

SQL Server dilengkapi dengan beberapa sesi Extended Events yang sudah dibuat. Semua dikonfigurasi untuk memulai setiap kali sistem SQL dimulai. Sesi peristiwa ini mengumpulkan data yang mungkin berguna jika terjadi kesalahan sistem. Seperti banyak sesi peristiwa, mereka hanya mengonsumsi sedikit sumber daya, dan Microsoft merekomendasikan agar mereka dibiarkan saja untuk dijalankan.

Anda dapat melihat sesi peristiwa ini di Object Explorer SSMS di bawah ManagementExtended>EventsSessions>. Pada Juni 2016, daftar sesi peristiwa yang diinstal ini adalah:

  • AlwaysOn_health
  • System_health
  • telemetry_events

Penyedia PowerShell untuk Acara yang Diperluas

Anda dapat mengelola SQL Server Extended Events dengan menggunakan penyedia SQL Server PowerShell. Detailnya ada di: Gunakan Penyedia PowerShell untuk Acara yang Diperluas

Tampilan sistem untuk Kejadian yang Diperluas

Tampilan sistem untuk Acara yang Diperluas meliputi:

  • Tampilan katalog: untuk informasi tentang sesi peristiwa yang telah ditentukan oleh CREATE EVENT SESSION.

  • Tampilan manajemen dinamis (DMV): untuk informasi tentang sesi peristiwa secara aktif berjalan saat ini.

SELECT dan JOIN Dari Tampilan Sistem untuk Peristiwa yang Diperluas di SQL Server - menyediakan informasi tentang:

  • Cara menggabungkan tampilan satu sama lain.
  • Beberapa SELECT yang berguna dari tampilan.
  • Korelasi antara:
    • Kolom tampilan.
    • BUAT klausa SESI PERISTIWA.
    • Kontrol UI SSMS.

Lampiran: SELECT untuk memastikan pemilik izin terlebih dahulu

Izin yang disebutkan dalam artikel ini adalah:

  • MENGUBAH SESI PERISTIWA APA PUN
  • LIHAT STATUS SERVER
  • SERVER KONTROL

Pernyataan T-SQL SELECT berikut dapat melaporkan siapa yang memiliki izin ini.

Izin langsung UNION ditambah izin turunan peran

SELECT berikut ini... Pernyataan UNION ALL mengembalikan baris yang menunjukkan siapa yang memiliki izin yang diperlukan untuk membuat sesi peristiwa dan mengkueri tampilan katalog sistem untuk Peristiwa yang Diperluas.

-- Ascertain who has the permissions listed in the ON clause.
-- 'CONTROL SERVER' permission includes the permissions
-- '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
        JOIN sys.server_principals   AS prin

            ON prin.principal_id = perm.grantee_principal_id
    WHERE
        perm.permission_name IN
            ('ALTER ANY EVENT SESSION',
            '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 OUTER JOIN sys.server_principals    AS prin
            ON prin.principal_id = rolm.role_principal_id
        LEFT OUTER JOIN sys.server_principals     AS pri2
            ON rolm.member_principal_id = pri2.principal_id
    WHERE
        prin.name = 'sysadmin'
    ORDER BY
        1,2,3,4;

HAS_PERMS_BY_NAME (Fungsi HAS_PERMS_BY_NAME)

Berikut ini SELECT melaporkan izin Anda. Ini bergantung pada fungsi bawaan HAS_PERMS_BY_NAME.

Selanjutnya, jika Anda memiliki wewenang untuk sementara meniru akun lain, Anda dapat membatalkan komentar pernyataan EXECUTE AS LOGIN dan REVERT, untuk menanyakan akun lain.

--EXECUTE AS LOGIN = 'AccountNameHere';
SELECT HAS_PERMS_BY_NAME
    (
       null
       , null
       , 'ALTER ANY EVENT SESSION'
    );
--REVERT;

Berikut adalah tautan ke dokumentasi yang terkait dengan SELECT ini, dan izin: