Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği Genişletilmiş Olaylar

Şunlar için geçerlidir:Azure SQL Veritabanı Azure SQL Yönetilen Örneği

Genişletilmiş Olaylara giriş için bkz:

Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği genişletilmiş olaylar için özellik kümesi, işlevsellik ve kullanım senaryoları, SQL Server'da sağlananlara benzer. Ana farklar şunlardır:

  • Hedef her event_file zaman diskteki dosyalar yerine Azure Depolama blobları kullanır.
  • Azure SQL Veritabanı olay oturumları her zaman veritabanı kapsamındadır. Bu, şu anlama gelir:
    • Bir veritabanındaki olay oturumu başka bir veritabanından olay toplayamaz.
    • Bir olayın oturuma dahil edilmesi için kullanıcı veritabanı bağlamında gerçekleşmesi gerekir.
  • Azure SQL Yönetilen Örneği'da hem sunucu kapsamlı hem de veritabanı kapsamlı olay oturumları oluşturabilirsiniz. Çoğu senaryo için sunucu kapsamlı olay oturumları kullanmanızı öneririz.

Kullanmaya başlayın

Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği'da Genişletilmiş Olaylar'ı hızlı bir şekilde kullanmaya başlamanıza yardımcı olacak iki örnek vardır:

  • Azure Depolama'da event_file hedefi olan bir oturum oluşturun. Bu örnekte, hedefi kullanarak Azure Depolama bir dosyada (blob) olay verilerini nasıl yakalayabileceğiniz gösterilmektedirevent_file. Yakalanan olay verilerini kalıcı hale getirmek istiyorsanız veya yakalanan verileri analiz etmek için SQL Server Management Studio'da (SSMS) olay görüntüleyicisini kullanmak istiyorsanız bunu kullanın.
  • Bellekte ring_buffer hedefi olan bir oturum oluşturun. Bu örnek, hedefi kullanarak bellekteki bir olay oturumundan en son olayları nasıl yakalayabileceğinizi ring_buffer gösterir. Yakalanan olay verilerini depolamak zorunda kalmadan geçici araştırmalar veya sorun giderme sırasındaki son olaylara göz atmak için bunu hızlı bir yol olarak kullanın.

Genişletilmiş Olaylar salt okunur çoğaltmaları izlemek için kullanılabilir. Daha fazla bilgi için bkz . Çoğaltmalarla ilgili sorguları okuma.

En iyi yöntemler

Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği'da veritabanı altyapısının sistem durumunu ve iş yükü performansını etkilemeden güvenilir bir şekilde ve Azure SQL Yönetilen Örneği Genişletilmiş Olayları kullanmak için aşağıdaki en iyi yöntemleri benimseyin.

  • Hedefi kullanırsanız event_file :
    • seçeneğini olarak NO_EVENT_LOSSayarlamayınEVENT_RETENTION_MODE. Bu durum, veritabanı veya yönetilen örnek kullanılabilirliğini etkileyen diğer sorunlar arasında bağlantı zaman aşımlarına ve yük devretme gecikmelerine neden olabilir.
    • Olay oturumlarını oluşturduğunuz veritabanı veya yönetilen örnekle aynı Azure bölgesinde bir depolama hesabı kullanın.
    • Depolama hesabının yedekliliğini veritabanının, elastik havuzun veya yönetilen örneğin yedekliliğiyle hizalayın. Yerel olarak yedekli kaynaklar için LRS, GRS veya RA-GRS kullanın. Alanlar arası yedekli kaynaklar için ZRS, GZRS veya RA-GZRS kullanın. Ayrıntılar için bkz. Azure Depolama yedekliliği.
    • dışında Hotbir blob erişim katmanı kullanmayın.
  • Her Veritabanı Altyapısı yeniden başlatıldıktan sonra (örneğin, bir yük devretme veya bakım olayından sonra) otomatik olarak başlatılan sürekli çalışan bir olay oturumu oluşturmak istiyorsanız, veya ALTER EVENT SESSION deyimlerinize CREATE EVENT SESSION olay oturumu seçeneğini STARTUP_STATE = ON ekleyin.
  • Buna karşılık geçici sorun gidermede kullanılanlar gibi kısa süreli olay oturumları için kullanın STARTUP_STATE = OFF .
  • Azure SQL Veritabanı yerleşik olay oturumundan kilitlenme olaylarını okumayındl. Toplanan çok sayıda kilitlenme olayı varsa, bunları sys.fn_xe_file_target_read_file() işleviyle okumak veritabanında bellek yetersiz hatasına master neden olabilir. Bu, oturum açma işlemini etkileyebilir ve uygulama kesintisine neden olabilir. Kilitlenmeleri izlemenin önerilen yolları için bkz. Genişletilmiş Olaylar ile Azure SQL Veritabanı'de kilitlenme graflarını toplama.

Olay oturumu hedefleri

Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği aşağıdaki hedefleri destekler:

  • hedefi event_file. Azure Depolama kapsayıcısında bir bloba tam arabellekler yazar.
  • hedefi ring_buffer. Yeni olay verileriyle değiştirilene kadar olay verilerini bellekte tutar.
  • hedefi event_counter. Genişletilmiş olaylar oturumu sırasında gerçekleşen tüm olayları sayar.
  • histogram hedefi. Farklı alan veya eylem değerlerinin oluşumlarını ayrı demetlerde sayar.
  • event_stream. Olay verilerini .Net uygulamasına Akışlar.

Not

event_stream Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği hedef önizleme aşamasındadır.

Transact-SQL farklılıkları

CREATE EVENT SESSION, ALTER EVENT SESSION ve DROP EVENT SESSION deyimlerini SQL Server'da ve Azure SQL Yönetilen Örneği yürütürken yan tümcesini ON SERVER kullanırsınız. Azure SQL Veritabanı Azure SQL Veritabanı olay oturumlarında veritabanı kapsamlı olduğundan yan tümcesini ON DATABASE kullanırsınız.

Genişletilmiş Olaylar kataloğu görünümleri

Genişletilmiş Olaylar birkaç katalog görünümü sağlar. Katalog görünümleri size olay oturumu meta verileri veya tanımı hakkında bilgi gösterir. Bu görünümler etkin olay oturumlarının örnekleri hakkında bilgi döndürmez.

Katalog görünümünün adı Açıklama
sys.database_event_session_actions Bir olay oturumunun her olayındaki her eylem için bir satır döndürür.
sys.database_event_session_events Bir olay oturumundaki her olay için bir satır döndürür.
sys.database_event_session_fields Olaylar ve hedefler üzerinde açıkça ayarlanmış her özelleştirilebilir sütun için bir satır döndürür.
sys.database_event_session_targets Bir olay oturumu için her olay hedefi için bir satır döndürür.
sys.database_event_sessions Veritabanındaki her olay oturumu için bir satır döndürür.

Genişletilmiş Olaylar dinamik yönetim görünümleri

Genişletilmiş Olaylar birkaç dinamik yönetim görünümü (DMV) sağlar. DMV'ler, başlatılan olay oturumları hakkında bilgi döndürür.

DMV adı Açıklama
sys.dm_xe_database_session_event_actions Olay oturumu eylemleri hakkındaki bilgileri döndürür.
sys.dm_xe_database_session_events Oturum olayları hakkındaki bilgileri döndürür.
sys.dm_xe_database_session_object_columns Oturuma bağlı nesnelerin yapılandırma değerlerini gösterir.
sys.dm_xe_database_session_targets Oturum hedefleri hakkındaki bilgileri döndürür.
sys.dm_xe_database_sessions Geçerli veritabanında çalışan her olay oturumu için bir satır döndürür.

Yaygın DMV'ler

Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve SQL Server için ortak olan ek Genişletilmiş Olaylar DMV'leri vardır:

Kullanılabilir olaylar, eylemler ve hedefler

SQL Server'da olduğu gibi, şu sorguyu kullanarak kullanılabilir olayları, eylemleri ve hedefleri alabilirsiniz:

SELECT o.object_type,
       p.name AS package_name,
       o.name AS db_object_name,
       o.description AS db_obj_description
FROM sys.dm_xe_objects AS o
INNER JOIN sys.dm_xe_packages AS p
ON p.guid = o.package_guid
WHERE o.object_type IN ('action','event','target')
ORDER BY o.object_type,
         p.name,
         o.name;

İzinler

Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği Genişletilmiş Olaylar ayrıntılı bir izin modelini destekler. Aşağıdaki izinler verilebilir:

CREATE ANY DATABASE EVENT SESSION
DROP ANY DATABASE EVENT SESSION
ALTER ANY DATABASE EVENT SESSION
ALTER ANY DATABASE EVENT SESSION ADD EVENT
ALTER ANY DATABASE EVENT SESSION DROP EVENT
ALTER ANY DATABASE EVENT SESSION ADD TARGET
ALTER ANY DATABASE EVENT SESSION DROP TARGET
ALTER ANY DATABASE EVENT SESSION ENABLE
ALTER ANY DATABASE EVENT SESSION DISABLE
ALTER ANY DATABASE EVENT SESSION OPTION

Bu izinlerin denetimlerinden her biri hakkında bilgi için bkz . CREATE EVENT SESSION, ALTER EVENT SESSION ve DROP EVENT SESSION.

Bu izinlerin tümü veritabanı veya yönetilen örnekteki izinlere dahil CONTROL edilir. Azure SQL Veritabanı'da veritabanı sahibi (dbo), veritabanı rolünün db_owner üyeleri ve mantıksal sunucunun yöneticileri veritabanı CONTROL iznine sahiptir. Azure SQL Yönetilen Örneği'da, sunucu rolünün sysadmin üyeleri örnekteki izni tutarCONTROL.

Kapsayıcı yetkilendirme ve denetimi Depolama

Hedefi kullandığınızdaevent_file, olay verileri Azure Depolama kapsayıcısında bloblarda depolanır. Olay oturumunu çalıştıran Veritabanı Altyapısı'nın bu kapsayıcıya özel erişimi olmalıdır. Kapsayıcı için bir SAS belirteci oluşturup belirteci bir kimlik bilgisinde depolayarak bu erişimi verirsiniz.

Azure SQL Veritabanı'de veritabanı kapsamlı bir kimlik bilgisi kullanmanız gerekir. Azure SQL Yönetilen Örneği'da sunucu kapsamlı bir kimlik bilgisi kullanın.

Azure Depolama kapsayıcınız için oluşturduğunuz SAS belirteci aşağıdaki gereksinimleri karşılamalıdır:

  • rwl (Read, Write, List) izinlerine sahip olun.
  • Olay oturumunun ömrünü kapsayan başlangıç zamanına ve süre sonu süresine sahip olun.
  • IP adresi kısıtlaması yoktur.

Kaynak idaresi

Azure SQL Veritabanı' de, genişletilmiş olay oturumları tarafından bellek tüketimi, kaynak çekişmelerini en aza indirmek için Veritabanı Altyapısı tarafından dinamik olarak denetlenmektedir.

Olay oturumları için kullanılabilir bellek sınırı vardır:

  • Tek bir veritabanında toplam oturum belleği 128 MB ile sınırlıdır.
  • Elastik havuzda tek tek veritabanları tek veritabanı sınırlarıyla sınırlıdır ve toplamda 512 MB'ı aşamaz.

Bellek sınırına başvuran bir hata iletisi alırsanız, gerçekleştirebileceğiniz düzeltici eylemler şunlardır:

  • Daha az eşzamanlı olay oturumu çalıştırın.
  • Olay oturumları için ve ALTER deyimlerini kullanarakCREATE, oturum yan tümcesinde MAX_MEMORY belirttiğiniz bellek miktarını azaltın.

Not

Genişletilmiş Olaylar'da yan MAX_MEMORY tümcesi iki bağlamda görünür: oturum oluştururken veya değiştirirken (oturum düzeyinde) ve hedefi kullanırken ring_buffer (hedef düzeyde). Yukarıdaki sınırlar oturum düzeyi belleği için geçerlidir.

Azure SQL Veritabanı'da başlatılan olay oturumlarının sayısıyla ilgili bir sınır vardır:

  • Tek bir veritabanında sınır 100'dür.
  • Elastik havuzda sınır, havuz başına veritabanı kapsamlı 100 oturumdur.

Yoğun elastik havuzlarda, yeni bir genişletilmiş olay oturumu başlatma işlemi, başlatılan toplam oturum sayısı 100'ün altında olsa bile bellek kısıtlamaları nedeniyle başarısız olabilir.

Bir olay oturumu tarafından tüketilen toplam belleği bulmak için, olay oturumunun başlatıldığı veritabanına bağlıyken aşağıdaki sorguyu yürütebilirsiniz:

SELECT name AS session_name,
       total_buffer_size + total_target_memory AS total_session_memory
FROM sys.dm_xe_database_sessions;

Elastik havuzun toplam olay oturumu belleğini bulmak için bu sorgunun havuzdaki her veritabanında yürütülmesi gerekir.