Şimdi paylaş:
İçindekiler gizlemek

1. Giriş

1.1 Nelerdir? SQL Server Genişletilmiş Etkinlikler?

SQL Server Genişletilmiş Etkinlikler, yöneticilerin ve geliştiricilerin ayrıntılı sunucu etkinliği verilerini toplayıp analiz etmelerini sağlayan hafif bir performans izleme sistemidir. Bu sistem, SQL Server Veritabanı Motoru, hem normal operasyonlara hem de sorun giderme senaryolarına ilişkin kapsamlı bilgiler sağlar.

1.2 İzleme İçin Neden Genişletilmiş Olaylar Kullanılmalıdır?

SQL Server Genişletilmiş Etkinlikler, veritabanı izleme ve sorun giderme için birçok cazip avantaj sunar:

  • Hafif mimariyle minimum performans etkisi
  • Veri toplama ve olay filtreleme üzerinde ayrıntılı kontrol
  • Belirli izleme ihtiyaçlarına göre uyarlanmış özelleştirilebilir veri toplama
  • Birden fazla paketten aynı anda olay yakalama yeteneği
  • İlgili işlemlere odaklanmak için esnek filtreleme yetenekleri
  • Kullanıcı deneyimini bozmadan üretim sistemi izleme desteği
  • Kapsamlı performans ölçümlerinin takibi
  • Gelişmiş teşhis yetenekleri ile sorun giderme
  • Uyumluluk gereklilikleri için denetim izi bakımı
  • Gerçek zamanlı ve geçmiş veri analizi seçenekleri

1.3 Genişletilmiş Etkinlikler ve SQL Server Profiler

Süre SQL Server Profiler Geleneksel bir izleme aracı olan MS SQL Extended Events, daha verimli bir alternatif sunar. Extended Events, daha az sistem kaynağı tüketir ve üretim ortamları için daha iyi ölçeklenebilirlik sunar.

SQL Server Profiler artık kullanımdan kaldırıldı ve Microsoft tüm izleme etkinlikleri için Genişletilmiş Olaylara geçiş yapılmasını öneriyor.

2. Genişletilmiş Olay Mimarisini Anlama

2.1 Genişletilmiş Olay Motoru Bileşenleri

Genişletilmiş Olaylar motoru, olay verilerini yakalamak, işlemek ve depolamak için birlikte çalışan birkaç temel bileşenden oluşur. Bu bileşenleri anlamak, etkili izleme çözümleri tasarlamanıza yardımcı olur.

  • Gönderici: Dağıtıcı bileşeni, olay kaynaklarından Genişletilmiş Olaylar motoruna olay akışını koordine eder. Bir olay tetiklendiğinde, dağıtıcı bildirimi alır ve bu belirli olay türüne abone olan etkin oturumlara yönlendirir.
  • Tampon: Tamponlar, hedef cihazlara yazmadan önce olay verilerini geçici olarak bellekte depolar. Bu tamponlama mekanizması, G/Ç işlemlerini azaltarak performansı artırır. Tampon boyutu ve yönetim ayarları, bellek kullanımını veri yakalama gereksinimleriyle dengeleyecek şekilde yapılandırılabilir.
  • Oturum, toplantı, celse: Bir oturum, olay izlemenin kapsamını tanımlar. Hangi olayların yakalanacağını, hangi eylemlerin yürütüleceğini, hangi koşulların uygulanacağını ve sonuçların nerede saklanacağını belirtir. Oturumlar bağımsız olarak oluşturulabilir, değiştirilebilir, başlatılabilir ve durdurulabilir.
  • Hedef Örnek: Hedef örnekler, yakalanan olay verilerinin depolanacağı yerleri temsil eder. Her oturum, dosyalar, halka tamponlar veya sayaçlar gibi bir veya birden fazla hedefe yazabilir. Hedefler, olay bilgilerini işler ve daha sonraki analizler için saklar.

2.2 Etkinlik Paketleri

SQL Server Extended Events, işlevselliği paketler halinde düzenler. Her paket, ilgili olayları, eylemleri, türleri, koşulları ve hedefleri içerir. Yaygın paketler arasında sqlserver, sqlos ve package0 bulunur.

  • Sqlserver paketi sorgular ve işlemler gibi veritabanına özgü olayları sağlar.
  • Sqlos paketi işletim sistemi olaylarını içerir.
  • package0 tüm paketlerde kullanılan genel amaçlı işlevselliği sunar.

2.3 Olay Türleri ve Alanları

Olaylar, içindeki oluşumları temsil eder SQL Server İzlemek istediğiniz. Her olay türünün, ilgili bilgileri yakalayan önceden tanımlanmış alanları vardır. Örneğin, sql_statement_completed olayı, süre, CPU süresi, okuma ve yazma işlemleri için alanlar içerir.

Olaylar eşzamanlı veya eşzamansız olabilir. Eşzamanlı olaylar işlem sırasında, eşzamansız olaylar ise tamamlandıktan sonra tetiklenir. Olay özelliklerini anlamak, izleme ihtiyaçlarınıza uygun olayları seçmenize yardımcı olur.

2.4 Eylem

Eylemler, yakalanan olaylara ek bilgiler ekler. Bir olay tetiklendiğinde, SQL metni, oturum kimliği veya çağrı yığını bilgileri gibi ek bağlamı toplamak için ilgili eylemler yürütülür.

Sık kullanılan işlemler arasında sorgu ifadelerini yakalamak için `sql_text`, veritabanını tanımlamak için `database_name` ve kaynak sunucuyu izlemek için `client_hostname` bulunur. İşlemler, sorun giderme ve analiz için temel bağlam sağlar.

2.5 Hedef

Hedefler, olay verilerinin nasıl ve nerede saklanacağını belirler. SQL Server Genişletilmiş Olaylar, aşağıdakiler de dahil olmak üzere birden fazla hedef türünü destekler:

  • disk depolama için event_file, ayrıntılı analiz için kalıcı depolama sağlar
  • belleğe dayalı saklama için ring_buffer, minimum ek yük ile son olaylara hızlı erişim sağlar
  • basit sayım için event_counter
  • gruplama için histogram
  • İlgili olayları ilişkilendirmek için pair_matching

2.6 Tahminler (Filtreler)

Tahminler, olayları belirtilen koşullara göre filtreleyerek yakalanan veri hacmini azaltır. Veritabanı adına, uygulama adına, oturum kimliğine, süre eşiklerine veya herhangi bir olay alanı değerine göre filtreleme yapabilirsiniz.

Etkili yordam kullanımı, yalnızca ilgili olayları yakalayarak performans etkisini en aza indirir. Karmaşık yordamlar, hassas filtreleme ölçütleri oluşturmak için mantıksal operatörler kullanarak birden fazla koşulu birleştirir.

3. Genişletilmiş Olay Oturumu Durumları ve Yaşam Döngüsü

3.1 Oturum Durumları: OLUŞTUR, DEĞİŞTİR ve BIRAK

Genişletilmiş Etkinlik oturumları farklı durumlar üzerinden ilerler:

  • CREATE EVENT SESSION ifadesi yeni bir oturum tanımlar ancak başlatmaz. Oturum, açıkça etkinleştirilene kadar durdurulmuş durumda kalır.
  • ALTER EVENT SESSION ifadesi, oturum yapılandırmasını değiştirir veya oturumun durumunu durdurulmuş ve başlatılmış arasında değiştirir.
  • DROP EVENT SESSION ifadesi oturum tanımını sunucudan tamamen kaldırır.

3.2 Oturum İçeriği ve Özellikleri

Her oturum, bir dizi olay, eylem, hedef ve koşul içerir. Oturumların, kapsamlarını ve davranışlarını tanımlayan örtük sınırları vardır. Yapılandırma seçenekleri, bellek tahsisini, olay saklamayı ve gönderim gecikmesini kontrol eder.

Oturum özellikleri arasında sunucu yeniden başlatmalarında oturumun devamlılığı, maksimum bellek tahsisi ve bellek baskısının nasıl ele alındığı yer alır. Bu ayarlar, oturum davranışını ve kaynak tüketimini önemli ölçüde etkiler.

3.3 Oturum Sınırları ve Paketleri

Oturum sınırları, olaylar, hedefler ve paketler arasındaki ilişkileri tanımlar. Bir paketten gelen olaylar, başka bir paketten eylemleri tetikleyebilir ve bu da veri toplama stratejilerinde esneklik sağlar.

Paket ilişkileri, birden fazla kaynaktan gelen olayları tek bir oturumda birleştirmenize olanak tanır. Bu özellik, farklı kaynakları kapsayan kapsamlı izleme senaryolarına olanak tanır. SQL Server alt sistemler.

4. SSMS Kullanarak Genişletilmiş Etkinlik Oturumları Oluşturma

4.1 Önkoşullar ve Kurulum

Oluşturmadan önce SQL Server Genişletilmiş Etkinlik oturumları için uygun izinlere sahip olduğunuzdan emin olun. Sunucu kapsamlı oturumlar için HERHANGİ BİR OLAY OTURUMUNU DEĞİŞTİR iznine veya veritabanı kapsamlı oturumlar için veritabanında KONTROL iznine ihtiyacınız vardır.

Bunu doğrulayın SQL Server Management Studio kuruldu ve hedef örneğinize bağlandı. İzleme gereksinimlerini öğrenin ve ihtiyaçlarınıza en uygun olayları ve hedefleri belirleyin.

4.2 Nesne Gezgini'nde Genişletilmiş Olaylara Erişim

SSMS'de Genişletilmiş Olaylar arayüzüne erişmek için şu adımları izleyin:

  1. Açılış SQL Server Yönetim Stüdyosu'na bağlanın ve SQL Server örneği.
  2. Nesne Gezgini'nde genişletin Yönetim -> Genişletilmiş Etkinlikler.
  3. Genişletilmiş Olaylar düğümü şunları içerir: Oturumlar hem de Paketler İzleme yapılandırmalarınızı yönetmek için klasörler.

Genişletilmiş Etkinlikler arayüzüne erişin SQL Server Yönetim Stüdyosu.

4.3 Yeni Bir Oturum Oluşturun

Yeni bir oturum oluşturmak için:

    1. Üzerinde sağ tıklayın Oturumlar altındaki klasör Genişletilmiş Etkinlikler.
    2. Seç Yeni sezon Yapılandırma iletişim kutusunu açmak için. Aşağıdaki içerik, yeni bir oturum oluşturmak için bu yöntemi kullanacaktır.

Genişletilmiş Etkinliklerin Yeni Bir Oturumunu Oluşturun SQL Server Yönetim Stüdyosu.

Not: Yeni Oturum Sihirbazı Daha rehberli bir deneyim için ayrıca mevcuttur.

4.3.1 Genel Sayfa Yapılandırması

Üzerinde Genel sayfa, temel oturum özelliklerini yapılandırın:

  1. Oturum adını girin Oturum adı Alan. İzleme amacını belirten açıklayıcı isimler kullanın.
  2. İsteğe bağlı olarak seçin Sunucu başlatıldığında etkinlik oturumunu başlatın. otomatik oturum aktivasyonunu etkinleştirmek için.
  3. Varsayılan oturum şablonu: BoşÖnceden tanımlanmış bir yapılandırma kullanıyorsanız diğer şablonları kullanabilirsiniz.

Genişletilmiş Etkinlikler oturumunun genel sayfası SQL Server Yönetim Stüdyosu.

4.3.2 Etkinlikler Sayfası Kurulumu

MKS Etkinlikler sayfa hangi olayların izleneceğini seçmenize olanak tanır:

  1. seçmek Etkinlikler soldan sayfa Bir sayfa seçin paneli.
  2. içinde Etkinlik kütüphanesi, mevcut etkinliklere göz atın veya arama fonksiyonunu kullanın.
  3. İlgili olayları bulmak için “sql_statement_completed” gibi anahtar sözcükleri yazarak olayları filtreleyin.
  4. İstenilen olayı seçin, örneğin sql_statement_completed.
  5. Etkinliği taşımak için sağ ok düğmesine tıklayın Seçilmiş olaylar liste.

Genişletilmiş Etkinlikler oturumunun Etkinlikler sayfası SQL Server Yönetim Stüdyosu.

4.3.3 Veri Depolama Yapılandırması

MKS Veri depolama sayfa, olay verilerinin nerede saklandığını tanımlar:

  1. seçmek Veri depolama soldan sayfa Bir sayfa seçin paneli.
  2. içinde Hedefler Alan için açılır menüden bir hedef türü seçin.

Genişletilmiş Olaylar oturumunun veri depolama sayfası SQL Server Yönetim Stüdyosu.

(1) olay_dosyası Hedefi

`event_file` hedefi, verileri `.xel` uzantılı disk dosyalarına kaydeder:

  1. Seç olay_dosyası Hedef türü açılır menüsünden.
  2. Dosya yolunu belirtin, örneğin C:\temp\YourSession_Target.xel.
  3. Maksimum dosya boyutunu ve dosya sayısını ayarlayarak disk alanını yönetmek için devretme seçeneklerini yapılandırın.
  4. Hedef, oturum sona erene veya depolama sınırlarına ulaşılana kadar sürekli olarak olay yazmaya devam eder.

SSMS'de oturum hedefi olarak event_file'ı ayarlayın.

(2) halka tamponu Hedefi

ring_buffer hedefi, disk G/Ç işlemine gerek kalmadan hızlı erişim için olayları bellekte saklar:

  1. Seç halka_tamponu hedef türü olarak.
  2. Arabellek için maksimum bellek ayırmayı yapılandırın.
  3. Tampon dolduğunda eski olayların atıldığını ve bunun yakın zamandaki aktivite izleme için uygun olduğunu anlayın.

Genişletilmiş Olaylar oturumu için hedefi ring_buffer olarak ayarlayın. SQL Server Yönetim Stüdyosu.

(3) olay sayacı Hedefi

`event_counter` hedefi, ayrıntılı verileri saklamadan yalnızca olayların gerçekleşme sayısını sayar. Bu, yalnızca sıklık bilgisine ihtiyaç duyduğunuzda minimum ek yük sağlar.

Genişletilmiş Olaylar oturumu için hedefi event_counter olarak ayarlayın. SQL Server Yönetim Stüdyosu.

(4) histogram Hedef

Histogram, belirli bir alan değerine göre olayları gruplandırarak dağıtım istatistikleri oluşturur. Bu, ortak kalıpları veya yüksek frekanslı değerleri belirlemek için kullanışlıdır.

Genişletilmiş Etkinlikler oturumu için hedefi histogram olarak ayarlayın. SQL Server Yönetim Stüdyosu.

(5) çift eşleştirme Hedefi

Pair_matching hedefi, kilit alma ve bırakma gibi ilgili olayları ilişkilendirir. Bu, eşleştirilmiş işlemlerin ve zamanlama ilişkilerinin analizini mümkün kılar.

SSMS'de oturum hedefi olarak pair_matching'i ayarlayın.

4.3.4 Gelişmiş Ayarlar

MKS Gelişmiş ortodontik vakalar için kapsamlı çözüm paketi sayfa oturum düzeyinde yapılandırma seçenekleri sağlar:

  1. seçmek Gelişmiş ortodontik vakalar için kapsamlı çözüm paketi soldan sayfa Bir sayfa seçin paneli.
  2. yapılandırma Olay saklama modu olayların bellek baskısı altında nasıl işleneceğini kontrol etmek.
  3. set Maksimum gönderim gecikmesi Gerçek zamanlı işlemeyi sistem performansıyla dengelemek.
  4. yapılandırma Maksimum bellek boyutu hem de Maksimum etkinlik boyutu izleme gereksinimlerinize göre.
  5. Seç Bellek bölümleme modu tek veya çoklu CPU ortamları için optimize etmek.

Oturumun gelişmiş sayfası SQL Server Yönetim Stüdyosu.

4.4 Olay Filtrelerini (Yordamları) Yapılandırma

Yordamlar, olayları belirli ölçütlere göre filtreleyerek veri hacmini azaltır. Filtreleri yapılandırmak için:

  1. Üzerinde Etkinlikler Sayfada, filtrelemek istediğiniz olayı (örneğin “sql_statement_completed”) seçin.
  2. Tıkla yapılandırma Etkinlik yapılandırma iletişim kutusunu açmak için.
    Genişletilmiş Olaylar oturumunun olayını yapılandırın SQL Server Yönetim Stüdyosu.
  3. seçmek Filtre (Yüklem) sekmesi.
  4. içinde Alan Açılır menüden, süre gibi filtrelemek istediğiniz alanı seçin.
  5. Bir seçin Kullanım, örneğin “>”.
  6. Filtreye girin Özellik, örneğin 1000000 (1 saniye).
  7. Gerekirse daha fazla koşul ekleyin.

Bir olay için filtreleri (yordamları) yapılandırın.

4.5 Eylemleri ve Olay Alanlarını Seçme

Her etkinlik için toplanacak verileri seçebilirsiniz:

  1. Üzerinde Etkinlikler Sayfada, verileri seçmek istediğiniz olayı, örneğin “sql_statement_completed” öğesini seçin.
  2. Tıkla yapılandırma Etkinlik yapılandırma iletişim kutusunu açmak için.
  3. seçmek Küresel Alanlar (Eylemler) sekmesi.
  4. Veritabanı adı veya istemci uygulaması adı gibi ek bilgiler eklemek için eylemleri seçin.
    Bir olayın eylemlerini yapılandırın.
  5. Gözden Etkinlik Alanları Hangi alanların otomatik olarak yakalandığını görmek için bölüme bakın.
  6. Veri hacmini azaltmak için gereksiz alanları temizleyin.
    Bir olayın alanlarını yapılandırın.

4.6 Oturumları Başlatma ve Yönetme

Oturumunuzu yapılandırdıktan sonra, başlatabilir ve çalışmasını izleyebilirsiniz:

  1. Tıkla OK oturumu oluşturmak için.
  2. Nesne Gezgini'nde, Oturumlar Yeni oturumunuzu görmek için klasöre gidin.
  3. Oturum adına sağ tıklayın ve seçin Oturumu Başlat olayları yakalamaya başlamak için.
    Genişletilmiş Etkinlikler oturumunu başlatın SQL Server Yönetim Stüdyosu.
  4. Canlı verileri görüntülemek için oturuma sağ tıklayın ve şunu seçin: Canlı Verileri İzle.
    Genişletilmiş Etkinlikler oturumunun canlı verilerini izleyin SQL Server Yönetim Stüdyosu.
  5. Oturumu sağ tıklayıp seçerek durdurun Oturumu Durdur.

5. T-SQL Kullanarak Genişletilmiş Olay Oturumları Oluşturma

5.1 OLAY OTURUMU OLUŞTUR Sözdizimi

T-SQL ile Genişletilmiş Olay oturumları oluşturmak, hassas kontrol sağlar ve otomatik dağıtım için komut dosyası oluşturmayı mümkün kılar. CREATE EVENT SESSION ifadesi belirli bir sözdizimi yapısını izler.

Temel sözdizimi, oturum adını, her olay için ADD EVENT maddelerini, depolama hedefleri için ADD TARGET maddelerini ve oturum yapılandırması için isteğe bağlı WITH maddelerini içerir.

5.2 Temel Bir Etkinlik Oturumu Oluşturma

Temel bir oturum, belirli olayları izler ve sonuçları bir hedefe yazar. İşte temel bileşenlerin nasıl oluşturulacağı.

5.2.1 Oturum Adı ve Seçeneklerini Tanımlama

Öncelikle oturumu açıklayıcı bir adla oluşturun:

CREATE EVENT SESSION [SampleSession] ON SERVER

ON SERVER ifadesi, veritabanı değişiklikleri arasında kalıcı olan sunucu kapsamlı bir oturum oluşturur. Azure SQL Veritabanı'nda, veritabanı kapsamlı oturumlar için ON DATABASE ifadesini kullanın.

5.2.2 ADD EVENT ile Olay Ekleme

ADD EVENT ifadesini kullanarak yakalanacak olayları ekleyin:

CREATE EVENT SESSION [SampleSession] ON SERVER
ADD EVENT sqlserver.sql_statement_completed

Bu, tamamlanan tüm SQL ifadelerini yakalar. Ek ADD EVENT ifadeleri ekleyerek birden fazla olay ekleyebilirsiniz.

5.2.3 Olay Eylemlerini Yapılandırma

Eylemler, her olay için ek bağlam toplar. Olay adından sonra parantez içinde eylemleri ekleyin:

CREATE EVENT SESSION [SampleSession] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
    ACTION(sqlserver.sql_text, sqlserver.database_name, sqlserver.username)
)

Bu örnek, tamamlanan her ifadenin SQL metnini, veritabanı adını ve kullanıcı adını yakalar.

5.2.4 Olay Tahminlerini Ayarlama (WHERE Maddesi)

Tahminler, veri hacmini azaltmak için olayları filtreler. Olay tanımında WHERE ifadesini kullanın:

CREATE EVENT SESSION [SampleSession] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
    ACTION(sqlserver.sql_text)
    WHERE ([package0].[greater_than_uint64]([duration],(5000000)))
)

Bu, süresi 5 saniyeden (5,000,000 mikrosaniye) daha uzun olan ifadeleri filtreler.

5.3 Olay Hedefleri Ekleme

Hedefler, olay verilerinin nerede saklanacağını ve nasıl işleneceğini tanımlar.

5.3.1 HEDEF EKLE Sözdizimi

Tüm olaylar tanımlandıktan sonra ADD TARGET ifadesini kullanarak hedefleri ekleyin:

ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\SampleSession.xel'
)

package0 öneki, hedefin temel paketten geldiğini gösterir.

5.3.2 Hedef Parametrelerinin Yapılandırılması

Her hedef türü belirli parametreleri kabul eder. event_file için, filename, max_file_size ve max_rollover_files parametrelerini yapılandırın:

ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\SampleSession.xel',
        max_file_size=(50),
        max_rollover_files=(5)
)

Bu yapılandırma, her biri 50 MB'a kadar dosya oluşturur ve rollover yoluyla 5 dosyaya kadar koruma sağlar.

5.4 Oturum Seçenekleri ve Ayarları

WITH ifadesi, davranışı ve kaynak kullanımını kontrol eden oturum düzeyindeki seçenekleri yapılandırır.

5.4.1 MAX_MEMORY ve EVENT_RETENTION_MODE

Baskı altında bellek tahsisini ve olay yönetimini kontrol edin:

WITH (
    MAX_MEMORY=4096 KB,
    EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS
)

EVENT_RETENTION_MODE seçenekleri arasında minimum bellek kullanımı için ALLOW_SINGLE_EVENT_LOSS, orta düzeyde ek yük için ALLOW_MULTIPLE_EVENT_LOSS ve potansiyel performans etkisi pahasına tam veri saklama için NO_EVENT_LOSS bulunur.

5.4.2 MAKSİMUM_SEVK_GECİKMESİ

Olayların hedef dosyalara yazılmadan önce arabelleklerde kalabileceği maksimum süreyi ayarlayın:

WITH (
    MAX_DISPATCH_LATENCY=30 SECONDS
)

Daha düşük değerler, artan G/Ç işlemleri pahasına daha fazla gerçek zamanlı veri sağlar.

5.4.3 BELLEK_BÖLÜMÜ_MODU

Donanım yapılandırmanız için bellek bölümlendirmesini optimize edin:

WITH (
    MEMORY_PARTITION_MODE=PER_CPU
)

Seçenekler arasında tek bölüm için NONE, NUMA sistemleri için PER_NODE ve çoklu CPU sistemlerinde maksimum eşzamanlılık için PER_CPU bulunur.

5.5 Oturumları Başlatma, Durdurma ve Değiştirme

ALTER EVENT SESSION ifadeleri aracılığıyla oturum durumunu ve yapılandırmasını yönetin.

5.5.1 Başlatma/Durdurma için OLAY OTURUMUNU DEĞİŞTİRME

Oluşturulduktan sonra bir oturum başlatın:

ALTER EVENT SESSION [SampleSession] ON SERVER STATE = START;

Çalışan bir oturumu durdurun:

ALTER EVENT SESSION [SampleSession] ON SERVER STATE = STOP;

5.5.2 Mevcut Oturumları Değiştirme

Durdurulmuşken oturum yapılandırmasını değiştirin. Olay ekleyin:

ALTER EVENT SESSION [SampleSession] ON SERVER
ADD EVENT sqlserver.sql_batch_completed;

Etkinlikleri kaldır:

ALTER EVENT SESSION [SampleSession] ON SERVER
DROP EVENT sqlserver.sql_statement_completed;

5.5.3 Etkinlik Oturumlarını Bırakma

DROP EVENT SESSION ile bir oturumu tamamen kaldırın:

DROP EVENT SESSION [SampleSession] ON SERVER;

Bırakmadan önce oturumun durdurulması gerekir.

6. Etkinlik Hedefleriyle Detaylı Çalışma

6.1 event_file Hedef Yapılandırması

`event_file` hedefi, esnek yapılandırma seçenekleriyle olay verileri için kalıcı depolama alanı sağlar.

6.1.1 Dosya Yolu ve Adlandırma Kuralları

Olay dosyaları için tam yolu ve dosya adını belirtin:

ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\MySession.xel'
)

Genişletilmiş Olay günlüğü dosyaları için .xel uzantısını kullanın. SQL Server servis hesabının belirtilen dizine yazma izinleri var.

6.1.2 Dosya Devirme ve Boyut Yönetimi

Disk alanını yönetmek için otomatik dosya devrini yapılandırın:

ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\MySession.xel',
        max_file_size=(50),
        max_rollover_files=(10)
)

Bir dosya 50 MB'a ulaştığında, SQL Server Genişletilmiş Olaylar, artırılmış bir sonekle yeni bir dosya oluşturur. 10 dosyaya ulaşıldığında, en eski dosyanın üzerine yazılır.

6.1.3 Olay Dosyası Verilerini Okuma

sys.fn_xe_file_target_read_file fonksiyonunu kullanarak olay dosyası verilerini sorgulayın:

SELECT
    event_data,
    file_name,
    file_offset
FROM sys.fn_xe_file_target_read_file(
    'C:\XEvents\MySession*.xel',
    NULL, NULL, NULL
);

Joker desen, oturumla ilişkili tüm dosyaları okur.

6.2 ring_buffer Hedef Kullanımı

ring_buffer hedefi, son etkinliklere hızlı erişim için olayları bellekte saklar.

6.2.1 Bellek Tabanlı Olay Depolama

Belleğe dayalı depolama için ring_buffer'ı yapılandırın:

ADD TARGET package0.ring_buffer

Etkinlikler yalnızca oturum etkinken erişilebilir kalır ve SQL Server Çalışmakta. Oturum sona erdiğinde veya sunucu yeniden başlatıldığında veriler kaybolur.

6.2.2 Arabellek Boyutu ve Yapılandırması

Halka tamponu için bellek tahsisini kontrol edin:

ADD TARGET package0.ring_buffer(
    SET max_memory=(4096)
)

Belleği KB cinsinden belirtin. Arabellek dolduğunda, eski olaylar FIFO yaklaşımı kullanılarak silinir.

6.2.3 Halka Arabellek Verilerini Sorgulama

DMV'ler aracılığıyla halka tampon verilerine erişim:

SELECT
    CAST(target_data AS XML) AS TargetData
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 = 'YourSessionName'
    AND t.target_name = 'ring_buffer';

target_data, XML formatında olay bilgilerini içerir.

6.3 olay sayacı Hedefi

`event_counter` hedefi, ayrıntılı veri depolaması gerektirmeden basit sayım işlemi sağlar:

ADD TARGET package0.event_counter

Bu hedef, minimum ek yükle olay sıklığını izler; yalnızca sayıların önemli olduğu yüksek hacimli izleme uygulamaları için kullanışlıdır.

6.4 histogram Hedefi

Histogram hedefi, olayları alan değerlerine göre gruplandırır:

ADD TARGET package0.histogram(
    SET filtering_event_name=N'sqlserver.sql_statement_completed',
        source_type=0,
        source=N'database_name'
)

Bu yapılandırma, olayların veritabanları arasında dağılımını gösteren bir histogram oluşturur.

6.5 çift eşleştirme Hedefi

Pair_matching hedefi, kilit alma ve kilit açma gibi ilgili olayları ilişkilendirir:

ADD TARGET package0.pair_matching(
    SET begin_event=N'sqlserver.lock_acquired',
        end_event=N'sqlserver.lock_released',
        begin_matching_columns=N'resource_type',
        end_matching_columns=N'resource_type'
)

Bu sayede eşleştirilmiş operasyonların ve sürelerinin analizi yapılabilmektedir.

7. Genişletilmiş Olay Verilerini Görüntüleme ve Analiz Etme

7.1 Canlı Verileri Görüntülemek İçin SSMS Kullanımı

SQL Server Management Studio, Genişletilmiş Olaylar verilerini gerçek zamanlı olarak görüntülemek için grafiksel bir arayüz sağlar:

  1. Nesne Gezgini'nde genişletin Yönetim -> Genişletilmiş Etkinlikler -> Oturumlar.
  2. Etkin oturumunuza sağ tıklayın.
  3. Seç Canlı Verileri İzle Canlı veri görüntüleyicisini açmak için.
    Genişletilmiş Etkinlikler oturumunun canlı verilerini izleyin SQL Server Yönetim Stüdyosu.
  4. Olaylar meydana geldikçe ızgarada görünür.
  5. Ayrıntılı alan değerlerini ayrıntılar bölmesinde görüntülemek için ayrı ayrı olaylara tıklayın.
    Etkinlik detayları dahil olmak üzere etkinliklerin canlı verilerini izleyin.
  6. Belirli olay türlerine veya alan değerlerine odaklanmak için araç çubuğu filtrelerini kullanın.

7.2 T-SQL ile Olay Dosyası Verilerini Sorgulama

T-SQL sorguları, yakalanan olay verilerinin esnek bir şekilde analiz edilmesini sağlar.

7.2.1 sys.fn_xe_file_target_read_file Fonksiyonu

Bu sistem fonksiyonunu kullanarak olay dosyası verilerini okuyun:

SELECT
    object_name AS EventName,
    CAST(event_data AS XML) AS EventData,
    file_name,
    file_offset,
    timestamp_utc
FROM sys.fn_xe_file_target_read_file(
    'C:\XEvents\MySession*.xel',
    NULL, NULL, NULL
);

Fonksiyon, XML biçimli ayrıntılarla olay başına bir satır döndürür.

7.2.2 XML Olay Verilerinin Ayrıştırılması

XML olay verilerinden belirli değerleri çıkarın:

SELECT
    event_data.value('(event/@name)[1]', 'VARCHAR(50)') AS EventName,
    event_data.value('(event/@timestamp)[1]', 'DATETIME2') AS Timestamp,
    event_data.value('(event/data[@name="duration"]/value)[1]', 'BIGINT') AS Duration,
    event_data.value('(event/data[@name="statement"]/value)[1]', 'VARCHAR(MAX)') AS Statement
FROM (
    SELECT CAST(event_data AS XML) AS event_data
    FROM sys.fn_xe_file_target_read_file(
        'C:\XEvents\MySession*.xel',
        NULL, NULL, NULL
    )
) AS EventData;

XQuery ifadeleri XML yapısından bireysel alan değerlerini çıkarır.

7.2.3 Olay Verilerini Tablolara Dönüştürme

Olay verilerinden yapılandırılmış sonuç kümeleri oluşturun:

WITH EventData AS (
    SELECT CAST(event_data AS XML) AS EventXML
    FROM sys.fn_xe_file_target_read_file(
        'C:\XEvents\MySession*.xel',
        NULL, NULL, NULL
    )
)
SELECT
    EventXML.value('(event/@name)[1]', 'VARCHAR(100)') AS EventName,
    EventXML.value('(event/data[@name="cpu_time"]/value)[1]', 'BIGINT') AS CPUTime,
    EventXML.value('(event/data[@name="physical_reads"]/value)[1]', 'BIGINT') AS PhysicalReads,
    EventXML.value('(event/action[@name="sql_text"]/value)[1]', 'VARCHAR(MAX)') AS SQLText,
    EventXML.value('(event/action[@name="database_name"]/value)[1]', 'VARCHAR(128)') AS DatabaseName
FROM EventData;

7.3 Halka Arabellek Verilerini Sorgulama

Ring_buffer hedeflerinden veri ayıklama:

SELECT
    n.value('(@name)[1]', 'VARCHAR(50)') AS EventName,
    n.value('(@timestamp)[1]', 'DATETIME2') AS Timestamp,
    n.value('(data[@name="duration"]/value)[1]', 'BIGINT') AS Duration,
    n.value('(action[@name="sql_text"]/value)[1]', 'VARCHAR(MAX)') AS SQLText
FROM (
    SELECT CAST(target_data AS XML) AS TargetData
    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 = 'YourSessionName'
        AND t.target_name = 'ring_buffer'
) AS Data
CROSS APPLY TargetData.nodes('//event') AS q(n);

7.4 Genişletilmiş Olaylar için Sistem Görünümleri

SQL Server Genişletilmiş Etkinlik oturumlarını yönetmek ve izlemek için çeşitli DMV'ler ve katalog görünümleri sağlar.

7.4.1 sys.server_event_sessions

Sunucuda saklanan oturum tanımlarını görüntüleyin:

SELECT
    name,
    event_retention_mode_desc,
    max_dispatch_latency,
    max_memory,
    max_event_size,
    memory_partition_mode_desc
FROM sys.server_event_sessions;

Bu katalog görünümü, tanımlanmış tüm oturumlar için yapılandırma ayrıntılarını gösterir.

7.4.2 sys.dm_xe_oturumları

Şu anda etkin olan oturumları görüntüle:

SELECT
    name,
    create_time,
    total_regular_buffers,
    regular_buffer_size,
    total_large_buffers,
    large_buffer_size
FROM sys.dm_xe_sessions;

Bu DMV, etkin Genişletilmiş Olay oturumları hakkında çalışma zamanı bilgileri sağlar.

7.4.3 sys.dm_xe_session_targets

Aktif oturumlarla ilişkili hedefleri görüntüleyin:

SELECT
    s.name AS SessionName,
    t.target_name,
    t.execution_count,
    t.execution_duration_ms
FROM sys.dm_xe_session_targets AS t
JOIN sys.dm_xe_sessions AS s
    ON s.address = t.event_session_address;

7.4.4 Diğer Faydalı DMV'ler

Ek görünümler kapsamlı oturum bilgileri sağlar:

  • sys.dm_xe_session_events: Etkin oturumlardaki olayları listeler
  • sys.dm_xe_session_event_actions: Oturum olayları için yapılandırılan eylemleri gösterir
  • sys.dm_xe_objects: Mevcut tüm olayları, eylemleri ve hedefleri kataloglar.
  • sys.dm_xe_object_columns: Her olay türü için kullanılabilir ayrıntı alanları
  • sys.dm_xe_packages: Tüm Genişletilmiş Olay paketlerini listeler

8. Pratik Kullanım Örnekleri ve Örnekler

8.1 SQL İfadesi Yürütmesini İzleme

SQL ifadesinin yürütülmesinin izlenmesi, sorgu kalıpları ve performans özellikleri hakkında bilgi sağlar.

8.1.1 sql_statement_completed Olaylarını İzleme

Tamamlanmış SQL ifadelerini izlemek için bir oturum oluşturun:

CREATE EVENT SESSION [QueryMonitoring] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
    ACTION(
        sqlserver.sql_text,
        sqlserver.database_name,
        sqlserver.client_hostname,
        sqlserver.username
    )
)
ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\QueryMonitoring.xel',
        max_file_size=(100),
        max_rollover_files=(5)
)
WITH (
    MAX_MEMORY=4096 KB,
    EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,
    MAX_DISPATCH_LATENCY=30 SECONDS,
    STARTUP_STATE=OFF
);

ALTER EVENT SESSION [QueryMonitoring] ON SERVER STATE = START;

8.1.2 Veritabanına veya Uygulamaya Göre Filtreleme

Tahminleri kullanarak belirli veritabanlarına veya uygulamalara odaklanın:

CREATE EVENT SESSION [AppSpecificMonitoring] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
    ACTION(sqlserver.sql_text, sqlserver.client_app_name)
    WHERE (
        [sqlserver].[database_name] = N'YourDatabase'
        AND [sqlserver].[client_app_name] LIKE N'YourApplication%'
    )
)
ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\AppMonitoring.xel'
);

8.2 Çıkmaz Bilgilerini Yakalama

Kilitlenme analizi, çakışan işlemler hakkında ayrıntılı bilginin yakalanmasını gerektirir.

8.2.1 xml_deadlock_report Olayı

Tam çıkmaz grafiklerini yakalamak için bir oturum oluşturun:

CREATE EVENT SESSION [DeadlockMonitoring] ON SERVER
ADD EVENT sqlserver.xml_deadlock_report(
    ACTION(
        sqlserver.database_name,
        sqlserver.sql_text
    )
)
ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\Deadlocks.xel'
)
WITH (STARTUP_STATE=ON);

ALTER EVENT SESSION [DeadlockMonitoring] ON SERVER STATE = START;

8.2.2 Kilitlenme Grafiklerinin Analizi

Kilitlenme bilgilerini çıkarın ve analiz edin:

SELECT
    EventXML.value('(event/@timestamp)[1]', 'DATETIME2') AS DeadlockTime,
    EventXML.query('.') AS DeadlockGraph
FROM (
    SELECT CAST(event_data AS XML) AS EventXML
    FROM sys.fn_xe_file_target_read_file(
        'C:\XEvents\Deadlocks*.xel',
        NULL, NULL, NULL
    )
) AS EventData
WHERE EventXML.value('(event/@name)[1]', 'VARCHAR(50)') = 'xml_deadlock_report';

Kilitlenme grafiği, süreçler, kaynaklar ve kurban seçimi hakkında ayrıntılar içerir.

8.3 Sorgu Performans Sorunlarını İzleme

Süre ve kaynak tüketim metriklerini kullanarak düşük performans gösteren sorguları belirleyin.

8.3.1 Uzun Süreli Sorgu Algılama

Belirli süre eşiklerini aşan sorguları yakalayın:

CREATE EVENT SESSION [LongRunningQueries] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
    ACTION(
        sqlserver.sql_text,
        sqlserver.database_name,
        sqlserver.plan_handle
    )
    WHERE ([duration] > 5000000)  -- 5 seconds in microseconds
)
ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\LongQueries.xel'
);

8.3.2 Uygulama Planı Analizi

Performans analizi için sorgu planlarını yakalayın:

CREATE EVENT SESSION [QueryPlans] ON SERVER
ADD EVENT sqlserver.query_post_execution_showplan(
    ACTION(
        sqlserver.sql_text,
        sqlserver.database_name
    )
    WHERE ([duration] > 10000000)  -- 10 seconds
)
ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\QueryPlans.xel',
    max_file_size=(200)
);

8.4 Oturum Açma ve Güvenlik Olaylarını İzleme

Güvenlik denetimi için kimlik doğrulama ve yetkilendirme faaliyetlerini takip edin.

8.4.1 Oturum Açma Başarı ve Başarısızlık Takibi

Başarılı ve başarısız oturum açma girişimlerini izleyin:

CREATE EVENT SESSION [LoginMonitoring] ON SERVER
ADD EVENT sqlserver.login(
    ACTION(
        sqlserver.client_hostname,
        sqlserver.client_app_name
    )
),
ADD EVENT sqlserver.login_failed(
    ACTION(
        sqlserver.client_hostname
    )
)
ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\Logins.xel'
)
WITH (STARTUP_STATE=ON);

8.4.2 İzin Değişiklikleri

Güvenlik izni değişikliklerini takip edin:

CREATE EVENT SESSION [SecurityChanges] ON SERVER
ADD EVENT sqlserver.server_principal_management_event,
ADD EVENT sqlserver.database_principal_management_event,
ADD EVENT sqlserver.database_permission_change_event
ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\SecurityAudit.xel'
);

8.5 Veritabanı Düzeyinde İzleme

Veritabanına özgü işlemleri ve durum değişikliklerini izleyin.

8.5.1 Yedekleme ve Geri Yükleme Olayları

Yedekleme ve geri yükleme işlemlerini takip edin:

CREATE EVENT SESSION [BackupMonitoring] ON SERVER
ADD EVENT sqlserver.backup_restore_progress_trace,
ADD EVENT sqlserver.databases_backup_restore_event
ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\BackupRestore.xel'
);

8.5.2 Veritabanı Durum Değişiklikleri

Veritabanı durum geçişlerini izleyin:

CREATE EVENT SESSION [DatabaseStateChanges] ON SERVER
ADD EVENT sqlserver.database_started,
ADD EVENT sqlserver.database_stopped
ADD TARGET package0.ring_buffer;

8.6 Veritabanı Bozulması ve Bütünlük Sorunlarının Algılanması

SQL Server Genişletilmiş Olaylar, olası veritabanı bozulmalarını tespit etmek için erken uyarı yetenekleri sunarak sorunlar büyümeden önce proaktif müdahaleye olanak tanır.

8.6.1 Yolsuzluk Tespiti için Önemli Olaylar

Birkaç olay potansiyel bozulma veya G/Ç sorunlarına işaret eder.

8.6.1.1 Kritik Hatalar için error_reported Olayı

error_reported olayı tümünü yakalar SQL Server hatalar, yolsuzlukla ilgili hata numaraları dahil:

ADD EVENT sqlserver.error_reported(
    WHERE (
        [severity] >= (20)
        OR [error_number] IN (823, 824, 825, 832, 855, 856)
    )
)

Hata 823 G/Ç hatalarını, 824 mantıksal tutarlılık hatalarını ve 825 donanım sorunlarına işaret edebilecek okuma-yeniden deneme başarılarını bildirir.

8.6.1.2 database_suspect_data_page Olayı

Bu olay şu durumda tetiklenir: SQL Server şüpheli bir sayfayla karşılaşır:

ADD EVENT sqlserver.database_suspect_data_page

Şüpheli sayfalar olası bozulmaları gösterir ve msdb.dbo.suspect_pages tablosunda kaydedilir.

8.6.1.3 errorlog_writing Olayı

Yazılan girişleri yakala SQL Server hata günlüğü:

ADD EVENT sqlserver.errorlog_written(
    WHERE ([severity] >= (16))
)

8.6.2 Bozulma İzleme Oturumu Oluşturma

Yolsuzluk tespiti ve izlenmesi için kapsamlı bir oturum oluşturun.

8.6.2.1 Bozulma Hata Numaralarını Filtreleme (823, 824, 825)

Yolsuzluk göstergelerine odaklanan hedefli bir oturum oluşturun:

CREATE EVENT SESSION [CorruptionDetection] ON SERVER
ADD EVENT sqlserver.error_reported(
    ACTION(
        sqlserver.database_name,
        sqlserver.sql_text
    )
    WHERE (
        [error_number] IN (823, 824, 825, 832, 855, 856)
        OR [severity] >= (20)
    )
),
ADD EVENT sqlserver.database_suspect_data_page(
    ACTION(
        sqlserver.database_name
    )
)
8.6.2.2 Uygun Önem Düzeylerinin Belirlenmesi

Bozulmaya işaret edebilecek yüksek şiddetteki hataları ekleyin:

WHERE (
    [severity] >= (20)
    OR [error_number] IN (823, 824, 825)
)

Önem derecesi 20 ve üzeri ise genellikle yolsuzlukla ilgili sistem düzeyindeki sorunları gösterir.

8.6.2.3 Uyarılar için Olay Dosyası Hedefinin Yapılandırılması

Analiz ve uyarı için bozulma olaylarını depolayın:

ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\CorruptionMonitoring.xel',
        max_file_size=(50),
        max_rollover_files=(10)
)
WITH (
    STARTUP_STATE=ON,
    MAX_DISPATCH_LATENCY=5 SECONDS
);

ALTER EVENT SESSION [CorruptionDetection] ON SERVER STATE = START;

8.6.3 Bozulma Olayı Verilerinin Analizi

Yakalanan verilerden yolsuzlukla ilgili olayları çıkarın ve yorumlayın.

8.6.3.1 Şüpheli Sayfaların Belirlenmesi

database_suspect_data_page olayları için sorgu:

SELECT
    EventXML.value('(event/@timestamp)[1]', 'DATETIME2') AS EventTime,
    EventXML.value('(event/data[@name="database_id"]/value)[1]', 'INT') AS DatabaseID,
    EventXML.value('(event/data[@name="file_id"]/value)[1]', 'INT') AS FileID,
    EventXML.value('(event/data[@name="page_id"]/value)[1]', 'BIGINT') AS PageID,
    EventXML.value('(event/action[@name="database_name"]/value)[1]', 'VARCHAR(128)') AS DatabaseName
FROM (
    SELECT CAST(event_data AS XML) AS EventXML
    FROM sys.fn_xe_file_target_read_file(
        'C:\XEvents\CorruptionMonitoring*.xel',
        NULL, NULL, NULL
    )
) AS EventData
WHERE EventXML.value('(event/@name)[1]', 'VARCHAR(50)') = 'database_suspect_data_page';
8.6.3.2 Hata Ayrıntılarını ve Bağlamı Çıkarma

Hata bildirilen olayları bozulma kalıpları açısından analiz edin:

SELECT
    EventXML.value('(event/@timestamp)[1]', 'DATETIME2') AS ErrorTime,
    EventXML.value('(event/data[@name="error_number"]/value)[1]', 'INT') AS ErrorNumber,
    EventXML.value('(event/data[@name="severity"]/value)[1]', 'INT') AS Severity,
    EventXML.value('(event/data[@name="message"]/value)[1]', 'VARCHAR(MAX)') AS ErrorMessage,
    EventXML.value('(event/action[@name="database_name"]/value)[1]', 'VARCHAR(128)') AS DatabaseName,
    EventXML.value('(event/action[@name="sql_text"]/value)[1]', 'VARCHAR(MAX)') AS SQLText
FROM (
    SELECT CAST(event_data AS XML) AS EventXML
    FROM sys.fn_xe_file_target_read_file(
        'C:\XEvents\CorruptionMonitoring*.xel',
        NULL, NULL, NULL
    )
) AS EventData
WHERE EventXML.value('(event/@name)[1]', 'VARCHAR(50)') = 'error_reported'
    AND EventXML.value('(event/data[@name="error_number"]/value)[1]', 'INT') IN (823, 824, 825);

8.6.4 DBCC CHECKDB ile Entegrasyon

Rehberlik etmek için Genişletilmiş Olaylar verilerini kullanın DBCC KONTROL DB'si yürütme.

8.6.4.1 Olaylara Dayalı DBCC CHECKDB'yi Tetikleme

Bozulma olayları algılandığında, kapsamlı doğrulama için DBCC CHECKDB'yi yürütün:

-- After detecting corruption events, run DBCC CHECKDB
DBCC CHECKDB ('YourDatabaseName') WITH NO_INFOMSGS, ALL_ERRORMSGS;

Genişletilmiş Olaylar erken uyarıyı sağlarken, DBCC CHECKDB kapsamlı doğrulama gerçekleştirir.

8.6.4.2 Otomatik Yolsuzluk Müdahale İş Akışları

Olay dosyasını izleyerek otomatik yanıtları uygulayın:

  1. yapılandırma SQL Server Bozulma izleme olay dosyasını periyodik olarak sorgulamak için aracı işi.
  2. Bozulma olayları bulunduğunda, etkilenen veritabanında DBCC CHECKDB'yi çalıştırın.
  3. Veritabanı yöneticilerine etkinlik detayları ve DBCC CHECKDB sonuçlarıyla ilgili e-posta uyarıları gönderin.
  4. Trend analizi için bulguları merkezi bir izleme tablosuna kaydedin.
8.6.4.3 Proaktif İzlemeyi Performansla Dengeleme

Genişletilmiş Olaylar, sık DBCC CHECKDB yürütmesine kıyasla düşük genel giderli bozulma tespiti sunar:

  • Gerçek zamanlı bozulma tespiti için Genişletilmiş Olayları sürekli olarak çalıştırın
  • DBCC CHECKDB'yi yalnızca bozulma göstergeleri göründüğünde yürütün
  • Bakım pencereleri sırasında düzenli DBCC CHECKDB planlayın
  • Hangi veritabanlarının acil ilgi gerektirdiğini belirlemek için Genişletilmiş Olayları kullanın

Bu yaklaşım, sürekli bütünlük kontrollerinin önemli kaynak tüketimi olmadan proaktif izleme sağlar.

8.6.4.4 Bozuk Veritabanını Onar

Veritabanında bozulmalar tespit edilirse, küçük bozulmaları düzeltmek için DBCC CHECKDB'yi kullanabilirsiniz. Başarısız olursa, üçüncü taraf bir aracı deneyebilirsiniz. SQL veritabanı kurtarma aracıGenellikle ciddi şekilde bozulmuş veritabanlarında daha yüksek bir kurtarma oranı sunar.

9. Sunucu Kapsamlı ve Veritabanı Kapsamlı Genişletilmiş Olaylar

9.1 Sunucu Kapsamlı Olay Oturumları

Sunucu kapsamlı oturumlar, tüm sunucu genelindeki etkinliği izler SQL Server Örnek. Bu oturumlar ON SERVER ifadesiyle oluşturulur ve ana veritabanında kalıcı olur.

CREATE EVENT SESSION [ServerWideMonitoring] ON SERVER
ADD EVENT sqlserver.sql_statement_completed
ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\ServerWide.xel'
);

Sunucu kapsamlı oturumlar, tüm veritabanlarından gelen olayları yakalar ve örnek düzeyinde izleme için uygundur.

9.2 Veritabanı Kapsamlı Olay Oturumları (Azure SQL Veritabanı)

Veritabanı kapsamlı oturumlar tek bir veritabanıyla sınırlıdır ve öncelikle sunucu düzeyinde erişimin kısıtlı olduğu Azure SQL Veritabanı'nda kullanılır:

CREATE EVENT SESSION [DatabaseSpecificMonitoring] ON DATABASE
ADD EVENT sqlserver.sql_statement_completed
ADD TARGET package0.event_file(
    SET filename=N'DatabaseMonitoring.xel'
);

Azure SQL Veritabanında olay dosyaları yerel dosya sistemleri yerine Azure Blob Depolama'da depolanır.

9.3 Farklılıklar ve Kullanım Örnekleri

Sunucu kapsamlı oturumlar, tüm veritabanlarında kapsamlı izleme sağlar, ancak yükseltilmiş izinler gerektirir. Veritabanı kapsamlı oturumlar, izolasyon sunar ve belirli uygulamaları veya kiracıları izlerken uygundur.

Merkezi izleme, veritabanları genelinde performans sorunlarını giderme ve güvenlik denetimi için sunucu kapsamlı oturumları kullanın. Azure SQL Veritabanı'nda, çok kiracılı ortamlarda veya izleme sorumluluklarını uygulama ekiplerine devrederken veritabanı kapsamlı oturumları kullanın.

10. Azure SQL Veritabanında Genişletilmiş Olaylar

10.1 Azure'a Özgü Hususlar

Azure SQL Veritabanı, şirket içi veritabanından bazı farklılıklarla Genişletilmiş Olayları uygular SQL ServerOturumlar varsayılan olarak veritabanı kapsamlıdır ve olay dosyası depolaması yerel dosya sistemleri yerine Azure Blob Depolama'yı kullanır.

Azure Blob Depolama'ya kimlik doğrulama, olay dosyası hedefinde yapılandırılmış bir SAS belirteci gerektirir. Bağlantı dizeleri, olay dosyalarının depolandığı depolama hesabını ve kapsayıcıyı belirtir.

10.2 Azure'da Kullanılabilir Hedefler

Azure SQL Veritabanı aşağıdaki Genişletilmiş Olay hedeflerini destekler:

  • event_file: Azure Blob Depolamasına yazar
  • ring_buffer: Şirket içi depolama ile aynı davranışa sahip bellek tabanlı depolama
  • event_counter: Olay oluşumlarını sayar

event_file hedefi, Azure Blob Depolama kimlik bilgileriyle yapılandırılmayı gerektirir:

ADD TARGET package0.event_file(
    SET filename=N'https://yourstorageaccount.blob.core.windows.net/container/EventFile.xel'
)

10.3 Veritabanı Kapsamlı Oturumlar Oluşturma

Azure SQL Veritabanında bir oturum oluşturun:

CREATE EVENT SESSION [AzureMonitoring] ON DATABASE
ADD EVENT sqlserver.sql_statement_completed(
    ACTION(sqlserver.sql_text, sqlserver.database_name)
)
ADD TARGET package0.ring_buffer
WITH (MAX_MEMORY=4096 KB);

ALTER EVENT SESSION [AzureMonitoring] ON DATABASE STATE = START;

Azure'daki veritabanı kapsamlı oturumlar, şirket içi sunucu kapsamlı oturumlarla benzer şekilde davranır ancak kapsam geçerli veritabanıyla sınırlıdır.

11. En İyi Uygulamalar ve Performans Optimizasyonu

11.1 Performans Etkisini En Aza İndirme

Genişletilmiş Etkinlikler minimum ek yük için tasarlanmıştır, ancak yanlış yapılandırma performansı etkileyebilir. Aşağıdaki yönergeleri izleyin:

  • Her şeyi yakalamak yerine olayları filtrelemek için belirli tahminler kullanın
  • İşleme yükü ekleyen gereksiz eylemleri toplamaktan kaçının
  • Veri saklama ihtiyaçlarına göre uygun hedefleri seçin.
  • Makul arabellek boyutları ve dağıtım gecikmeleri ayarlayın
  • DMV'leri kullanarak oturum kaynak tüketimini izleyin

11.2 Doğru Olayları ve Filtreleri Seçme

İzleme hedeflerinize doğrudan hitap eden olayları seçin. Gerekmedikçe yüksek frekanslı olaylardan kaçının ve veri hacmini azaltmak için her zaman öngörüler uygulayın.

Örneğin, tüm sql_statement_completed olaylarını yakalamak yerine, belirli veritabanları veya süre eşikleri için filtreleme yapın:

WHERE (
    [sqlserver].[database_name] = N'ProductionDB'
    AND [duration] > 1000000
)

11.3 Hedef Seçimi Yönergeleri

Analiz gereksinimlerinize göre hedefleri seçin:

  • Ayrıntılı tarihsel analiz ve uzun vadeli saklama için event_file'ı kullanın
  • Minimum G/Ç etkisiyle gerçek zamanlı izleme için ring_buffer kullanın
  • Yalnızca frekansın önemli olduğu durumlarda event_counter kullanın
  • Dağıtım analizi için histogramı kullanın
  • İlişkili olay analizi için pair_matching'i kullanın

11.4 Oturum Yapılandırma Önerileri

Oturumları uygun kaynak sınırlarıyla yapılandırın:

  • Beklenen olay hacmi ve sunucu kaynaklarına göre MAX_MEMORY'yi ayarlayın
  • Çoğu senaryoda minimum ek yük için ALLOW_SINGLE_EVENT_LOSS kullanın.
  • Gerçek zamanlı ihtiyaçlar ile performans arasında denge kurmak için MAX_DISPATCH_LATENCY değerini ayarlayın
  • Çok işlemcili sistemlerde PER_CPU bellek bölümlendirmesini kullanın
  • Sürekli izleme gerekmedikçe STARTUP_STATE=ON seçeneğinden kaçının.

11.5 Olay Dosyası Boyutunu ve Saklamayı Yönetme

Sınırsız disk kullanımını önlemek için dosya devrini yapılandırın:

ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\Session.xel',
        max_file_size=(100),
        max_rollover_files=(10)
)

Bu yapılandırma yaklaşık 1 GB etkinlik verisi (10 dosya × 100 MB) tutar. Saklama gereksinimlerinize ve kullanılabilir depolama alanınıza göre ayarlayın.

12. Genişletilmiş Olaylarda Sorun Giderme

12.1 Yaygın Sorunlar ve Çözümler

Genişletilmiş Olaylar ile ilgili sık karşılaşılan sorunlar arasında oturumların veri yakalamaması, performans düşüşü, dosya hedefi sorunları ve beklenmedik oturum davranışları yer almaktadır.

12.2 Oturum Verileri Yakalamıyor

Bir oturum beklenen olayları yakalamıyorsa:

  1. sys.dm_xe_sessions kullanarak oturumun başlatıldığını doğrulayın.
  2. Tüm olayları filtrelemediklerinden emin olmak için tahminleri kontrol edin.
  3. Filtreleri geçici olarak kaldırarak olayların tetiklendiğini doğrulayın.
  4. Oturum verilerini görüntüleme erişiminiz olduğundan emin olmak için izinleri inceleyin.
  5. Hedef yapılandırmasının doğru ve yazılabilir olduğundan emin olun.
SELECT name, create_time
FROM sys.dm_xe_sessions
WHERE name = 'YourSessionName';

12.3 Performans Düşüşü

Genişletilmiş Olaylar performans sorunlarına neden oluyorsa:

  1. Olay hacmini azaltmak için yordamlar ekleyin.
  2. Ek veri toplayan gereksiz işlemleri kaldırın.
  3. Yazma sıklığını azaltmak için MAX_DISPATCH_LATENCY değerini artırın.
  4. EVENT_RETENTION_MODE'u ALLOW_SINGLE_EVENT_LOSS olarak değiştirin.
  5. Yüksek frekanslı olaylar için event_file yerine ring_buffer kullanmayı düşünün.

12.4 Dosya Hedefi Sorunları

Dosya hedefiyle ilgili sorunlar genellikle izinlerle veya disk alanıyla ilgilidir:

  1. Doğrulayın. SQL Server Hizmet hesabının hedef dizine yazma izinleri vardır.
  2. Yeterli disk alanının mevcut olduğundan emin olun.
  3. Belirtilen yolun mevcut olduğunu ve erişilebilir olduğunu kontrol edin.
  4. Dosyalar beklendiği gibi devredilmiyorsa dosya devri yapılandırmasını gözden geçirin.

12.5 Sistem Görünümleriyle Hata Ayıklama

Genişletilmiş Olay sorunlarını teşhis etmek için DMV'leri kullanın:

-- Check session status
SELECT s.name, s.create_time, s.total_regular_buffers, s.total_large_buffers
FROM sys.dm_xe_sessions AS s;

-- View session targets and their status
SELECT
    s.name AS SessionName,
    t.target_name,
    t.execution_count,
    CAST(t.target_data AS XML) AS TargetData
FROM sys.dm_xe_session_targets AS t
JOIN sys.dm_xe_sessions AS s
    ON s.address = t.event_session_address;

-- Check for dropped events
SELECT s.name, s.dropped_event_count, s.dropped_buffer_count
FROM sys.dm_xe_sessions AS s;

13. İleri Düzey Konular

13.1 Özel Etkinlik Paketleri Oluşturma

İleri düzey kullanıcılar, etkinlik kapsamını genişletmek için özel etkinlik paketleri oluşturabilirler SQL Server Genişletilmiş Etkinlikler işlevi. Bu, C++ geliştirme ve entegrasyonunu gerektirir. SQL Server genişletilebilirlik çerçevesi.

Özel paketler, uygulamaya özgü olayların izlenmesini veya üçüncü taraf izleme sistemlerinin Genişletilmiş Olaylar altyapısıyla entegre edilmesini sağlar.

13.2 Etkinlik Oturumu Şablonları

SSMS, yaygın izleme senaryoları için yerleşik şablonlar sağlar. Sihirbaz aracılığıyla yeni oturumlar oluştururken şablonlara erişin:

  1. Yeni Oturum iletişim kutusunda, şablon yıkılmak.
  2. Sorgu Ayrıntı Takibi veya Sistem Sağlığı gibi mevcut şablonlardan seçim yapın.
  3. Şablonu özel gereksinimlerinize uyacak şekilde değiştirin.

13.3 İzleme Çözümleriyle Entegrasyon

Genişletilmiş Olaylar verileri kurumsal izleme çözümlerine şu şekilde aktarılabilir:

  • Olay verilerini merkezi kayıt sistemlerine aktarın
  • Olay dosyalarını ayrıştırın ve verileri izleme veritabanlarına yükleyin
  • BI araçlarını kullanarak özel panolar oluşturun
  • Belirli olay modellerine dayalı tetikleyici uyarılar
  • İlişkilendirmek SQL Server uygulama ve altyapı ölçümleriyle olaylar

13.4 Otomasyon ve Planlama

Genişletilmiş Olaylar yönetimini kullanarak otomatikleştirin SQL Server Ajan:

  • Belirli zaman aralıklarında oturumları başlatmak/durdurmak için görevler oluşturun.
  • Etkinlik dosyası analizi ve raporlamasını planlayın
  • Eski olay dosyalarını arşivleyerek veya silerek veri saklama politikalarını uygulayın
  • Performans sorunları veya güvenlik olayları gibi algılanan koşullara otomatik yanıt verin

14. Göç SQL Server Profiler

14.1 SQL Server Profiler Olaylarından Genişletilmiş Olaylara Eşleme

Microsoft, eşlemeyi şu şekilde sağlar: SQL Server Profiler Etkinlikler ve Genişletilmiş Etkinlikler. Yaygın eşlemeler şunlardır:

  • SQL:Toplu İşlem Tamamlandı -> sql_batch_tamamlandı
  • SQL:BatchStarting -> sql_batch_starting
  • SQL:StmtTamamlandı -> sql_ifadesi_tamamlandı
  • SQL:StmtStarting -> sql_statement_starting
  • Kilitlenme Grafiği -> xml_deadlock_report
  • Denetim Girişi -> giriş
  • Denetim Çıkışı -> Çıkış

14.2 İz Tanımlarını Dönüştürme

Mevcut olanı dönüştür SQL Server Profiler, eşdeğer olayları belirleyerek ve uygun tahminleri yapılandırarak Genişletilmiş Olaylar oturumlarına izler. SSMS, yaygın dönüşümler için yardım sağlar.

İzleme filtrelerini inceleyin ve bunları Genişletilmiş Olaylar tahminlerine dönüştürün. Genişletilmiş Olaylar'daki eylemler, izleme sütunlarını şu şekilde değiştirir: SQL Server Profilci.

14.3 Performans Karşılaştırması

Genişletilmiş Etkinlikler, şu etkinliklerden önemli ölçüde daha iyi performans sağlar: SQL Server Profiler. Karşılaştırmalı çalışmalar, Genişletilmiş Olayların daha az CPU döngüsü tükettiğini ve işlem hacmi üzerinde daha az etkiye sahip olduğunu göstermektedir.

Genişletilmiş Olaylar, eşzamansız işleme ve optimize edilmiş bellek yönetimini kullanırken SQL Server Profiler, izleme işlemi tamamlanana kadar bloke eden eşzamanlı olay yakalamaya dayanır.

15. Sonuç

15.1 Temel Kavramların Özeti

SQL Server Genişletilmiş Olaylar, izleme ve sorun giderme için güçlü ve hafif bir çerçeve sağlar SQL ServerMimari, ilgili sunucu etkinliğini yakalamak için birlikte çalışan olaylar, eylemler, önermeler, hedefler ve oturumlardan oluşur.

Oturumlar SSMS veya T-SQL kullanılarak oluşturulabilir ve bu da hem anlık sorun giderme hem de otomatik izleme için esneklik sağlar. Çoklu hedef türleri, ring_buffer ile gerçek zamanlı izlemeden event_file ile geçmişe dönük analize kadar farklı analiz yaklaşımlarını destekler.

Genişletilmiş Etkinlikler, aşağıdakilere kıyasla üstün performans sunar: SQL Server Profiler, daha kapsamlı izleme yetenekleri sunar. Sistem, veritabanı yöneticilerinin ve geliştiricilerin sorunları teşhis etmelerine, performansı optimize etmelerine, güvenliği artırmalarına ve uyumluluğu korumalarına olanak tanır.

15.2 Sonraki Adımlar ve Ek Kaynaklar

Geliştirmeye devam etmek için SQL Server XEvents uzmanlığı:

  • Uygulamalı deneyim kazanmak için test ortamlarında Genişletilmiş Etkinlikleri uygulayın
  • Tam olay katalogları ve ayrıntılı sözdizimi referansı için Microsoft belgelerini inceleyin
  • Kaydol SQL Server başkalarının deneyimlerinden öğrenmek için topluluk forumları
  • Özel paketler ve izleme platformlarıyla entegrasyon gibi gelişmiş senaryoları keşfedin
  • Sık kullanılan izleme senaryoları için oturum şablonlarından oluşan bir kütüphane geliştirin.

16 SSS Bölümü

S: Nedir SQL Server Genişletilmiş Etkinlikler?

A: SQL Server Genişletilmiş Etkinlikler, entegre edilmiş hafif bir performans izleme sistemidir. SQL Server Sunucu operasyonları hakkında detaylı bilgileri minimum yük ile yakalayan Veritabanı Motoru.

S: Genişletilmiş Etkinlikler, Genişletilmiş Etkinliklerden nasıl farklıdır? SQL Server Profilci?

A: Genişletilmiş Etkinlikler, daha iyi performans, daha düşük genel gider ve daha esnek yapılandırma sağlar SQL Server Profilci. SQL Server Profiler kullanımdan kaldırıldı ve Microsoft tüm izleme görevleri için Genişletilmiş Olaylar kullanılmasını öneriyor.

S: Genişletilmiş Etkinliklerin etkisi olabilir mi? SQL Server performans?

C: Uygun tahminler ve kaynak sınırlamalarıyla düzgün bir şekilde yapılandırıldığında, Genişletilmiş Olaylar performans üzerinde minimum etkiye sahiptir. Filtreleme yapılmadan yapılan kötü yapılandırma performansı etkileyebilir.

S: Genişletilmiş Etkinlik oturumları oluşturmak için hangi izinler gereklidir?

A: Sunucu kapsamlı oturumlar için ALTER ANY EVENT SESSION iznine veya veritabanı kapsamlı oturumlar için veritabanında CONTROL iznine ihtiyacınız vardır.

S: Genişletilmiş Etkinlikler verilerini nasıl görüntüleyebilirim?

C: Kullan SQL Server Management Studio'nun canlı veri görüntüleyicisini kullanın, sys.fn_xe_file_target_read_file ile olay dosyalarını sorgulayın veya DMV'ler aracılığıyla halka arabellek verilerini sorgulayın.

S: Genişletilmiş Olaylar veritabanı bozulmasını tespit edebilir mi?

C: Evet, Genişletilmiş Olaylar bozulmayla ilgili hataları (823, 824, 825) ve şüpheli sayfa olaylarını yakalayabilir ve olası bozulma sorunlarına ilişkin erken uyarı sağlayabilir.

S: Olaylar, eylemler ve yüklem arasındaki fark nedir?

A: Olaylar, izlemek istediğiniz oluşumlardır. Eylemler, yakalanan olaylara ek bilgiler ekler. Koşullar, veri hacmini azaltmak için olayları belirli şartlara göre filtreler.

S: Belirli uygulamalardan veya veritabanlarından gelen sorguları nasıl izleyebilirim?

A: Olay yapılandırmanızda veritabanı_adı, istemci_uygulama_adı veya diğer ilgili alanlara göre filtreleme yapmak için yordamları kullanın.

S: Genişletilmiş Etkinlikler için hangi hedefleri kullanmalıyım?

A: Kalıcı depolama ve geçmiş analizi için event_file'ı, düşük yük ile gerçek zamanlı izleme için ring_buffer'ı, basit frekans takibi için event_counter'ı ve dağıtım analizi için histogram'ı kullanın.

S: Azure SQL Veritabanında Genişletilmiş Olaylar kullanılabilir mi?

C: Evet, Azure SQL Veritabanı, olay dosyaları Azure Blob Depolama'da depolanan veritabanı kapsamlı Genişletilmiş Olayları destekler.

S: Veri yakalamayan bir Genişletilmiş Olaylar oturumunda sorun gidermeyi nasıl yaparım?

A: Oturumun başlatıldığını doğrulayın, koşulların tüm olayları filtrelemediğini kontrol edin, hedef yapılandırmasını onaylayın ve sistem DMV'lerini kullanarak izinleri gözden geçirin.

S: Genişletilmiş Etkinlikler yönetimini otomatikleştirebilir miyim?

A: Evet, kullanın SQL Server Temsilci görevleri arasında oturumları başlatmak/durdurmak, olay dosyalarını analiz etmek, saklama politikalarını uygulamak ve tespit edilen koşullara yanıt vermek yer alır.

Referanslar


Yazar Hakkında

Yuan Sheng 10 yılı aşkın deneyime sahip kıdemli bir veritabanı yöneticisidir (DBA) SQL Server ortamlar ve kurumsal veritabanı yönetimi alanında uzmanlaşmıştır. Finansal hizmetler, sağlık ve üretim sektörlerindeki yüzlerce veritabanı kurtarma senaryosunu başarıyla çözmüştür.

Yuan şu konuda uzmanlaşmıştır: SQL Server veritabanı kurtarma, yüksek kullanılabilirlik çözümlerive performans optimizasyonu. Çok terabaytlık veritabanlarını yönetme ve uygulama konularında kapsamlı pratik deneyimi bulunmaktadır. Her Zaman Açık Kullanılabilirlik Gruplarıve kritik iş sistemleri için otomatik yedekleme ve kurtarma stratejileri geliştirmek.

Yuan, teknik uzmanlığı ve pratik yaklaşımıyla, veritabanı yöneticilerinin ve BT profesyonellerinin karmaşık sorunları çözmelerine yardımcı olan kapsamlı kılavuzlar oluşturmaya odaklanıyor. SQL Server Zorlukları verimli bir şekilde çözer. En son gelişmelerle güncel kalır. SQL Server Microsoft'un gelişen veritabanı teknolojilerini ve sürümlerini takip ederek, önerilerinin gerçek dünyadaki en iyi uygulamaları yansıttığından emin olmak için kurtarma senaryolarını düzenli olarak test ediyor.

hakkında sorularınız var SQL Server Kurtarma veya ek veritabanı sorun giderme kılavuzuna mı ihtiyacınız var? Yuan memnuniyetle karşılar geri bildirim ve öneriler Bu teknik kaynakların iyileştirilmesi için.

Şimdi paylaş: