Aracılığıyla paylaş


Hızlı Başlangıç: Genişletilmiş Olaylar

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

Genişletilmiş Olaylar, kullanıcıların sorunları izlemek ve gidermek için veri toplamasına olanak tanıyan basit bir performans izleme özelliğidir. Genişletilmiş Olaylar'ı kullanarak, performans izleme ve sorun giderme amaçlarıyla ilgili veritabanı altyapısı iç işlemlerinin ayrıntılarını görebilirsiniz. Genişletilmiş Olaylar hakkında daha fazla bilgi edinmek için bkz. Genişletilmiş Olaylara genel bakış.

Bu makale Genişletilmiş Olaylar'ı kullanmaya yeni başlayan ve yalnızca birkaç dakika içinde olay verilerini görmek isteyen SQL yöneticilerine, mühendislerine ve geliştiricilerine yardımcı olmayı amaçlamaktadır.

Genişletilmiş Olaylar XEvents olarak da bilinir ve bazen yalnızca XE olarak da bilinir.

Bu makaleyi okuduktan sonra şunları yapabilirsiniz:

  • Örnek ekran görüntüleriyle SQL Server Management Studio'da (SSMS) bir olay oturumu oluşturmayı öğrenin.
  • Ekran görüntülerini eşdeğer Transact-SQL deyimleriyle ilişkilendirin.
  • SSMS kullanıcı arabiriminin ve XEvents T-SQL deyimlerinin ardındaki terimleri ve kavramları ayrıntılı olarak anlayın.
  • Etkinlik oturumunuzu nasıl test edeceğinizi öğrenin.
  • Aşağıdakiler dahil olmak üzere oturum sonuçlarını anlama:
    • Sonuç depolama için kullanılabilir seçenekler
    • İşlenen ve ham sonuçlar karşılaştırması
    • Sonuçları farklı şekillerde ve farklı zaman ölçeklerinde görüntüleme araçları
  • Kullanılabilir tüm olayları nasıl arayabileceğinizi ve keşfedebileceğinizi görün.
  • Genişletilmiş Olaylar sistem görünümleri arasındaki ilişkileri anlama.

Tavsiye

Kod örnekleri de dahil olmak üzere Azure SQL Veritabanı'ndaki Genişletilmiş Olaylar hakkında daha fazla bilgi için bkz. Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği'nde Genişletilmiş Olaylar.

Önkoşullar

Başlamak için şunları yapmanız gerekir:

  • SQL Server Management Studio'nun (SSMS) en son sürümünü yükleyin.
  • Hesabınızın (SQL Server 2022'de kullanıma sunulmuştur) veya CREATE ANY EVENT SESSIONALTER ANY EVENT SESSION sahip olduğundan emin olun.
  • Ayrıca, SSMS kullanırken ve oluşturulan oturumları görüntülemek için oturum açma izni VIEW SERVER PERFORMANCE STATEgerekir.
  • Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve Fabric platformundaki SQL veritabanı için Genişletilmiş Olay dosyaları Azure Depolama'da depolanır. Bir Azure depolama hesabına ihtiyacınız olacaktır.

Genişletilmiş Olaylar ile ilgili güvenlik ve izinlerle ilgili ayrıntılara ekteki bu makalenin sonundan ulaşabilirsiniz.

SSMS'de Genişletilmiş Olaylar

SSMS, Genişletilmiş Olaylar için tam işlevsel bir kullanıcı arabirimi (UI) sağlar. T-SQL veya dinamik yönetim görünümlerini (DMV) kullanmak zorunda kalmadan bu kullanıcı arabirimi kullanılarak birçok senaryo gerçekleştirilebilir.

Sonraki bölümde, Genişletilmiş Olaylar oturumu oluşturmak için kullanıcı arabirimi adımlarını ve rapor edilen verileri görebilirsiniz. Bu makaledeki adımları uygulamalı olarak inceledikten veya gözden geçirdikten sonra, daha derin bir anlayış için adımlarda yer alan kavramlar hakkında bilgi edinebilirsiniz.

SSMS'de bir olay oturumu oluşturun

Genişletilmiş Olaylar oturumu oluşturduğunuzda sisteme şunları söylersiniz:

  • Hangi etkinliklerle ilgileniyorsunuz?
  • Sistemin verileri size nasıl raporlamasını istediğinizi.

Tanıtımda Yeni Oturum iletişim kutusu açılır ve adlı dört sayfanın nasıl kullanılacağı gösterilir:

  • General
  • Events
  • Veri Depolama
  • Advanced

Metin ve destekleyici ekran görüntüleri SSMS sürümünüzde biraz farklı olabilir, ancak temel kavramların açıklamasıyla ilgili olmalıdır.

  1. Bir veritabanı altyapısı örneğine bağlanın. Genişletilmiş Olaylar, SQL Server 2014 (12.x), Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği ile başlayarak desteklenir.

  2. Nesne Gezgini'nde Yönetim > Genişletilmiş Olaylar'ı seçin. Azure SQL Veritabanı'nda olay oturumları veritabanı kapsamındadır, bu nedenle Genişletilmiş Olaylar seçeneği Yönetim altında değil her veritabanının altında bulunur.

  3. Oturumlar klasörüne sağ tıklayın ve Yeni Oturum... öğesini seçin. Yeni Oturum... iletişim kutusu, Yeni Oturum Sihirbazı'na tercih edilir, ancak ikisi benzerdir.

    Tavsiye

    Bu öğretici adımlarında, dört sayfayı da ilerletene kadar Tamam'a basmayın: Genel, Olaylar, Veri Depolama ve Gelişmiş.

  4. Genel sayfasını seçin. Ardından YourSession metin kutusuna , veya istediğiniz herhangi bir adı yazın. Henüz Tamam'ı seçmeyin, çünkü diğer sayfalara yine de bazı ayrıntılar girmeniz gerekir.

  5. Olaylar sayfasını seçin.

  6. Olay kitaplığı alanındaki açılan listede Yalnızca olay adları'nı seçin.

    • Metin kutusuna yazın sql_statement . Bu, listeyi yalnızca adında olan sql_statement olayları gösterecek şekilde filtreler.
    • Ekranı kaydırarak sql_statement_completed adlı olayı seçin.
    • Olayı > kutusuna taşımak için sağ ok düğmesini seçin.
  7. Olaylar sayfasında kalarak Yapılandır düğmesini seçin. Bu, seçili olaylar için Olay yapılandırma seçenekleri kutusunu açar.

    Yeni Oturum > Olayları > Kütüphanesinden olayları seçin. sql_statement_completed seçildi. Sonraki işlem yapılandırma düğmesine basmaktır.

  8. Filtre (Koşul) sekmesini seçin. Ardından, Yan tümce eklemek için buraya tıklayın yazan yeni filtre satırını seçin. Bu öğreticide, tüm SELECT ifadelerini bir HAVING koşuluyla yakalamak için bu filtreyi (önerme olarak da bilinir) yapılandıracağız.

  9. Alan açılan listesinde bir seçenek seçinsqlserver.sql_text.

    • İşleç için like_i_sql_unicode_string seçin. Burada işleç i adında case-insensitive anlamına gelir.
    • Değer için yazın%SELECT%HAVING%. Burada, yüzde işaretleri (%) herhangi bir karakter dizisini temsil eden joker karakterlerdir.

    Uyarı

    Alanın iki bölümden sqlserver oluşan adında paket adı ve sql_text alan adı yer alır. Daha önce seçtiğimiz olay, sql_statement_completedseçtiğimiz alanla aynı pakette olmalıdır.

    Yeni Oturum > Olaylarını > Yapılandırma > Filtresi (Koşul) > Alanının ekran görüntüsü.

  10. Veri Depolama sayfasını seçin.

  11. Hedefler alanında, Hedef eklemek için buraya tıklayın yazan yeni Hedef Türü satırını seçin. Bu öğreticide, yakalanan genişletilmiş olay verilerimizi bir olay dosyasına yazacağız. Bu, olay verilerinin daha sonra açıp görüntüleyebileceğimiz bir dosyada depolandığı anlamına gelir. SQL Server 2019 (15.x) ile başlayarak olay verileri De Azure Depolama'da depolanacak şekilde yazılabilir. Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve Fabric'deki SQL veritabanı için olay dosyaları her zaman Azure Depolama'da depolanır.

    • Tür açılır listesinden event_file öğesini seçin.
  12. Özellikler alanında, sunucudaki dosya adı metin kutusuna tam yolu ve dosya adını yazın. Gözat butonunu da kullanabilirsiniz. Dosya adı uzantısı olmalıdır xel. Örneğimizde kullandık C:\temp\YourSession_Target.xel.

    Yeni Oturum > Veri Depolama > Hedefleri > Türü > event_file ekran görüntüsü.

  13. Gelişmiş sayfasını seçin. Varsayılan yapılandırmada, genişletilmiş olay oturumunun bu .xel hedefinin sunucu performansı üzerinde en az etkiye sahip olması veya hiç etkisi olmamalıdır, ancak Gelişmiş sayfasındaki bu ayarlar kaynakları ve gecikme süresini artırmak veya azaltmak için kullanılabilir.

    Yeni Oturum Gelişmiş Ekran Görüntüsü >.

  14. Bu olay oturumunu oluşturmak için alttaki Tamam düğmesini seçin.

  15. SSMS Nesne Gezgini'ne dönün, Oturumlar klasörünü açın veya yenileyin ve genişletilmiş olaylar oturumu için YourSession yeni düğümü görün. Oturum henüz başlatılmadı. Bu öğreticide daha sonra başlatacağız.

SSMS'de olay oturumlarını düzenleme

SSMS Nesne Gezgini'nde, düğümüne sağ tıklayıp Özellikler'i seçerek olay oturumunuzu düzenleyebilirsiniz. Aynı çok sayfalı iletişim kutusu görüntülenir.

T-SQL kullanarak olay oturumu oluşturma

SSMS'de, olay oturumunuzu oluşturmak için aşağıdaki gibi bir T-SQL betiği oluşturabilirsiniz:

  • Olay oturumu düğümüne sağ tıklayın, ardından Oturum Betiği Olarak > OLUŞTUR'u Seç ve >Panoya kopyalayın.
  • Herhangi bir metin düzenleyicisine yapıştırın.

için oluşturulan CREATE EVENT SESSION T-SQL deyimi YourSessionaşağıdadır:

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

Uyarı

Azure SQL Veritabanı'nda ON DATABASE yerine ON SERVER kullanın.

Olay oturumunun koşullu silinmesi

CREATE EVENT SESSION deyiminden önce, aynı ada sahip bir oturumun zaten mevcut olması durumunda, bir DROP EVENT SESSION deyimini koşullu olarak yürütebilirsiniz. Bu işlem mevcut oturumu siler. Bu olmadan, aynı ada sahip bir oturum oluşturmaya çalışmak bir hataya neden olur.

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

T-SQL kullanarak olay oturumunu başlatma ve durdurma

Bir olay oturumu oluşturduğunuzda, varsayılan ayar otomatik olarak çalışmaya başlamamasıdır. Aşağıdaki ALTER EVENT SESSION T-SQL deyimini kullanarak istediğiniz zaman olay oturumunuzu başlatabilir veya durdurabilirsiniz.

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

Veritabanı altyapısı örneği başlatıldığında olay oturumunu otomatik olarak başlatacak şekilde yapılandırma seçeneğiniz vardır. STARTUP STATE = ON içindeki CREATE EVENT SESSION anahtar sözcüğüne bakın.

SSMS kullanıcı arabirimi, sayfasında sunucu > adlı ilgili bir onay kutusu sunar.

Olay oturumlarını test edin

Olay oturumunuzu şu adımlarla test edin:

  1. Nesne Gezgini'nde olay oturumu düğümünüze sağ tıklayın ve Oturum Başlat'ı seçin.
  2. Olay oturumunu oluşturduğunuz aynı sunucuya (veya Azure SQL Veritabanı'ndaki aynı veritabanına) bağlıyken aşağıdaki SELECT...HAVING deyimi birkaç kez çalıştırın. Her çalıştırmada HAVING cümlesindeki değeri değiştirmeyi ve dönüşümlü olarak 2 ile 3 arasında geçiş yapmayı düşünün. Bu, sonuçlardaki farkları görmenizi sağlar.
  3. Oturum düğümünüzü sağ tıklatın ve Oturumu Durdur'u seçin.
  4. SELECT ve sonuçları görüntüleme hakkında sonraki alt bölümü okuyun.
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;

Eksiksiz bir şekilde, önceki SELECT...HAVING örnek çıktısı aşağıda verilmiştir.

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

Olay oturumu verilerini XML olarak görüntüleme

SSMS'deki bir sorgu penceresinde, oturumunuz tarafından yakalanan olay verilerini görmek için aşağıdaki SELECT deyimi çalıştırın. Her satır bir olay oluşumunu temsil eder. CAST(... AS xml), sütunun veri türünü nvarchar'dan xml'ye değiştirir. Bu, sütun değerini seçerek daha kolay okunması için yeni bir pencerede açmanıza olanak tanır.

Uyarı

event_file hedef dosya adına her zaman sayısal bir parça xel olarak ekler. Aşağıdaki sorguyu çalıştırabilmeniz için önce, bu sayısal bölümü içeren dosyanın gerçek tam adını xel kopyalamanız ve deyimine SELECT yapıştırmanız gerekir. Aşağıdaki örnekte, sayısal bölüm şeklindedir _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
);

Bu sorgu, belirli bir olay satırının tam sonuçlarını görüntülemek için iki yol sağlar:

  • SSMS'de komutunu SELECT çalıştırın ve sütunda event_data_XML bir hücre seçin.

  • Bir hücreden XML dizesini event_data sütununa kopyalayın. Not Defteri gibi herhangi bir metin düzenleyicisine yapıştırın ve uzantılı xmldosyayı kaydedin. Ardından dosyayı bir tarayıcıda veya XML verilerini görüntüleyebilen bir düzenleyicide açın.

XML'de olay verileri

Ardından sonuçların XML biçimindeki bir bölümünü göreceğiz. Kısalık için aşağıdaki XML düzenlenmiştir. <data name="row_count"> değerini görüntüler. Bu değer 6, daha önce görüntülenen altı sonuç satırımızla eşleşir. Ve tüm SELECT ifadeyi görebiliriz.

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

SSMS'de olay oturumu verilerini görüntüleme

SSMS kullanıcı arabiriminde bir olay oturumu tarafından yakalanan verileri görüntülemek için kullanabileceğiniz çeşitli gelişmiş özellikler vardır. Daha fazla bilgi için bkz. SQL Server Management Studio'da olay verilerini görüntüleme.

Hedef Verileri Görüntüle ve Canlı Verileri İzle etiketli bağlam menüsü seçenekleriyle başlarsınız.

Hedef verileri görüntüleme

SSMS Nesne Gezgini'nde, olay oturumu düğümünüzün altındaki hedef düğüme sağ tıklayabilirsiniz, örneğin package0.event_counter. Bağlam menüsünde Hedef Verileri Görüntüle'yi seçin. SSMS verileri görüntüler.

Bir oturumda yeni olaylar gerçekleştiğinde görüntü güncelleştirilmez. Ancak Hedef Verileri Görüntüle'yi yeniden seçebilirsiniz.

Canlı verileri izleme

SSMS Nesne Gezgini'nde olay oturumu düğümünüzü sağ tıklatabilirsiniz. Bağlam menüsünde Canlı Verileri İzle'yi seçin. SSMS, gelen verileri gerçek zamanlı olarak gelmeye devam ettikçe görüntüler.

Genişletilmiş Olaylar'daki terimler ve kavramlar

Aşağıdaki tabloda Genişletilmiş Olaylar için kullanılan terimler listelenmiştir ve anlamları açıklanmaktadır.

Süre Description
event session Bir veya daha fazla olaya odaklanmış bir yapı ve eylemler gibi destekleyici öğeler, hedef olarak kullanılır. deyimi CREATE EVENT SESSION her olay oturumunu oluşturur. Bir olay oturumunu istediğiniz gibi başlatmak ve durdurmak için ALTER yapabilirsiniz.

Bağlamın "olay oturumu" anlamına geldiği durumlarda, olay oturumu bazen yalnızca oturum olarak adlandırılır.
Olay oturumlarıyla ilgili diğer ayrıntılar şu bölümde açıklanmıştır: Genişletilmiş Olaylar oturumları.
event Sistemde etkin bir olay oturumu tarafından takip edilen belirli bir olay.

Örneğin, sql_statement_completed olay belirli bir T-SQL deyiminin tamamlandığını gösterir. Etkinlik süresini ve diğer verileri raporlayabilir.
target Yakalanan bir olaydan çıkış verilerini alan öğe. Hedef, verileri size görüntüler.

Örneğin, bu hızlı başlangıçta daha önce kullanılmakta olan event_file hedefi ve en son olayları bellekte tutan ring_buffer hedefi verilebilir.
Herhangi bir olay oturumu için her tür hedef kullanılabilir. Ayrıntılar için bkz. Genişletilmiş Olaylar için Hedefler.
action Olayca bilinen bir alan. Alandaki veriler hedefe gönderilir. Eylem alanı koşul filtresiyle yakından ilişkilidir.
predicateveya filtreleyin Bir olay alanındaki verilerin testi, olay oluşumlarının yalnızca ilginç bir alt kümesinin hedefe gönderilmesi için kullanılır.

Örneğin, bir filtre yalnızca T-SQL deyiminin sql_statement_completed dizgesini içerdiği olay oluşumlarını içerebilir.
package Bir dizi olayı merkeze alan bir yapıda, öğelerin her birine eklenen bir ad niteleyicisi.

Örneğin, bir pakette T-SQL metniyle ilgili olaylar olabilir. Bir etkinlik toplu işlem içindeki tüm T-SQL ile ilgili olabilir. Bu arada, daha dar başka bir olay da bireysel T-SQL ifadeleriyle ilgili. Ayrıca, herhangi bir T-SQL deyimi için started ve completed olayları vardır.
Olaylar için uygun alanlar da olaylarla birlikte pakette yer alır. package0 içindeki hedeflerin çoğu, diğer birçok paketin olayları ile birlikte kullanılır.

Genişletilmiş Olay senaryoları ve kullanım ayrıntıları

Veritabanı altyapısını ve sorgu iş yüklerini izlemek ve sorunlarını gidermek için Genişletilmiş Olaylar'ı kullanmak için çok sayıda senaryo vardır. Aşağıdaki makalelerde kilitle ilgili senaryoları kullanan örnekler verilmiştir:

Paketlerde mevcut olayları keşfetme

Aşağıdaki sorgu, adı üç karakter dizesini sqliçeren kullanılabilir her olay için bir satır döndürür. Yan tümcesini LIKE düzenleyerek farklı olay adları arayabilirsiniz. Sonuç kümesi, olayı içeren paketi de tanımlar.

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;

Aşağıdaki sonuç örneği, döndürülen satırın burada column name = value biçiminde döndürülmüş halini gösterir. Veriler, önceki örnek adımlarda kullanılan olaydan sql_statement_completed alınıyor. Nesnenin açıklaması (bu örnekte bir olay), belge dizesi olarak görev alır.

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

SSMS kullanıcı arabirimini kullanarak olayları bulma

Olayları ada göre bulmanın bir diğer seçeneği de önceki ekran görüntüsünde gösterilen Yeni Oturum > Olayları > Olay kitaplığı iletişim kutusunu kullanmaktır. Kısmi bir olay adı yazabilir ve eşleşen tüm olay adlarını bulabilirsiniz.

SQL İzleme olay sınıfları

Genişletilmiş Olayların SQL Trace olay sınıfları ve sütunlarıyla kullanılması hakkında açıklamaya şu adresten ulaşabilirsiniz: SQL İzleme Olay Sınıfları ile Genişletilmiş Olaylar Eşdeğerlerini Görüntüleme.

Windows için Olay İzleme (ETW)

Windows için Olay İzleme (ETW) ile Genişletilmiş Olayları kullanma açıklamaları şu konumda bulunabilir:

Sistem etkinlik oturumları

SQL Server ve Azure SQL Yönetilen Örneği'nde, varsayılan olarak birkaç sistem olayı oturumu oluşturulur ve bu oturumlar, veritabanı motoru başlatıldığında başlatılacak şekilde yapılandırılmıştır. Çoğu olay oturumunda olduğu gibi az miktarda kaynak kullanır ve iş yükü performansını önemli ölçüde etkilemez. Microsoft, bu oturumların etkin ve çalışır durumda kalmasını önerir. Sistem durumu oturumları, özellikle system_health oturumu, genellikle izleme ve sorun giderme için yararlıdır.

Bu olay oturumlarını SSMS Nesne Gezgini'nde Yönetim > Genişletilmiş Olaylar > Oturumları altında görebilirsiniz. Örneğin, SQL Server'da bu sistem olayı oturumları şunlardır:

  • AlwaysOn_health
  • system_health
  • telemetry_events

PowerShell sağlayıcısı

Genişletilmiş Olayları SQL Server PowerShell sağlayıcısını kullanarak yönetebilirsiniz. Daha fazla bilgi için bkz. Genişletilmiş Olaylar için PowerShell Sağlayıcısı'nı kullanma.

Sistem görünümleri

Genişletilmiş Olaylar için sistem görünümleri şunlardır:

  • Katalog görünümleri: tarafından CREATE EVENT SESSIONtanımlanan olay oturumları hakkında bilgi için.
  • Dinamik yönetim görünümleri (DMV'ler): etkin (başlatılan) olay oturumları hakkında bilgi için.

SQL Server'da Genişletilmiş Olaylar için Sistem Görünümlerinden SELECT'ler ve JOIN'ler aşağıdakiler hakkında bilgi sağlar:

  • Görünümleri birleştirme
  • Bu görünümleri temel alan birkaç yararlı sorgu
  • Aşağıdakiler arasındaki bağıntı:
    • Sütunları görüntüleme
    • CREATE EVENT SESSION Cümleler
    • SSMS Kullanıcı Arabirimi

Ek: Genişletilmiş Olay izin sahiplerini bulmak için sorgular

Bu makalede belirtilen izinler şunlardır:

  • ALTER ANY EVENT SESSION
  • VIEW SERVER STATE
  • CONTROL SERVER

Aşağıdaki SELECT...UNION ALL deyim, olay oturumları oluşturmak ve Genişletilmiş Olaylar için sistem kataloğu görünümlerini sorgulamak için gerekli izinlere sahip olan kişileri gösteren satırları döndürür.

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

HAS_PERMS_BY_NAME işlevi

Aşağıdaki SELECT deyim izinlerinizi bildirir. Yerleşik işlev HAS_PERMS_BY_NAME dayanır.

Ayrıca, diğer oturum açma bilgilerinin kimliğini geçici olarak kullanma yetkiniz varsa, diğer oturum açma bilgilerinin izne olmadığını görmek için REVERT ve ALTER ANY EVENT SESSION deyimlerinin açıklamasını kaldırabilirsiniz.

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