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'daki 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'daki bir dosyada (blob) olay verilerini nasıl yakalayabileceğiniz gösterilmektedir
event_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
:- 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
Hot
bir 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
deyimlerinizeCREATE EVENT SESSION
olay oturumu seçeneğiniSTARTUP_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ın
dl
. Toplanan çok sayıda kilitlenme olayı varsa, bunları sys.fn_xe_file_target_read_file() işleviyle okumak veritabanında bellek yetersiz hatasınamaster
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 bir .NET uygulamasına akışla bildirir.
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
İpucu
2022'de Microsoft, Genişletilmiş Olaylar için daha ayrıntılı bir dizi yeni izin kullanıma sunulmuştur. Daha fazla bilgi için bkz . Blog: PoLP ile uyumluluğu geliştirmek için SQL Server 2022 ve Azure SQL için yeni ayrıntılı izinler.
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
.
Depolama kapsayıcısı yetkilendirme ve denetimi
Hedefi kullandığınızda event_file
, olay verileri bir 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. Bu erişimi aşağıdaki yollardan biriyle vekleyebilirsiniz:
Depolama Blobu Veri Katkıda Bulunanı RBAC rolünü kapsayıcıdaki Azure SQL mantıksal sunucusunun veya Azure SQL yönetilen örneğinin yönetilen kimliğine atayın ve Veritabanı Altyapısı'na kimlik doğrulaması için yönetilen kimliği kullanmasını bildirmek üzere bir kimlik bilgisi oluşturun.
Depolama Blobu Veri Katkıda Bulunanı RBAC rolünü atamaya alternatif olarak, aşağıdaki RBAC eylemlerini atayabilirsiniz:
Ad Alanı Eylem Microsoft.Storage/storageAccounts/blobServices/containers/
read
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/
delete
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/
read
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/
write
Not
Genişletilmiş olay oturumlarıyla yönetilen kimlik kullanımı önizleme aşamasındadır.
Kapsayıcı için bir SAS belirteci oluşturun ve belirteci bir kimlik bilgisi içinde depolayın.
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:
rwdl
(Read
,Write
,Delete
,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ümcesindeMAX_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.