Aracılığıyla paylaş


Azure SQL'de Genişletilmiş Olaylar

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

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

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

  • Azure SQL Veritabanı, Fabric üzerinde SQL veritabanı ve Azure SQL Yönetilen Örneği'nde event_file hedef her zaman diskteki dosyalar yerine Azure Depolama'daki blobları kullanır.
    • SQL Server'da hedef, event_file diskteki dosyaları veya Azure Depolama'daki blobları kullanabilir.
  • Doku'daki Azure SQL Veritabanı ve SQL veritabanı'nda 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.

Get started

Genişletilmiş Olaylar'ı hızlı bir şekilde kullanmaya başlamanıza yardımcı olacak iki izlenecek yol örneği vardır:

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

Genişletilmiş Olayları güvenli, güvenilir ve veritabanı altyapısının sistem durumunu ve iş yükü performansını etkilemeden kullanmak için aşağıdaki en iyi yöntemleri benimseyin.

  • Hedefi kullanırsanız event_file :
    • Oturuma eklenen olaylara bağlı olarak, hedef tarafından event_file oluşturulan dosyalar hassas veriler içerebilir. Gereksiz okuma erişimi vermekten kaçınmak için, devralınan erişim de dahil olmak üzere depolama hesabı ve kapsayıcıdaki RBAC rol atamalarını ve erişim denetimi listelerini (ACL) dikkatle gözden geçirin. En az ayrıcalık ilkesini izleyin.
    • 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 bir Hot kullanmayın.
    • Depolama hesabı için hiyerarşik ad alanını etkinleştirmeyin.
  • 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 STARTUP_STATE = ON deyimlerinize CREATE EVENT SESSION olay oturumu seçeneğini ALTER EVENT SESSION 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şlemlerini 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ı, Fabric'teki SQL Veritabanı, Azure SQL Yönetilen Örneği ve SQL Server'da desteklenen Genişletilmiş Olaylar hedefleri hakkında daha fazla bilgi için bkz. Genişletilmiş Olaylar için Hedefler.

Transact-SQL farkları

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.

Her platform için katalog görünümlerinin listesi için bkz. Genişletilmiş Olaylar Kataloğu Görünümleri.

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.

Her platform için DMV'lerin listesi için bkz. Genişletilmiş Olaylar Dinamik Yönetim Görünümleri.

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

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

Permissions

Platforma göre ayrıntılı izinler için izinlere bakın.

Depolama kapsayıcısı yetkilendirme ve denetimi

Azure Depolama bloblarıyla event_file hedefine kullandığınızda, olay oturumunu çalıştıran Veritabanı Motoru'nun blob kapsayıcısına belirli bir erişime sahip olması gerekir. 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:

    Namespace Action
    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
  • 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 ve SQL Server'da sunucu kapsamındaki 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 CREATE deyimlerini kullanarakALTER, oturum yan tümcesinde MAX_MEMORY belirttiğiniz bellek miktarını azaltın.

Note

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.