Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Olay bildirimleri bir Hizmet Aracısı hizmetine olaylar hakkında bilgi gönderir. Olay bildirimleri, çeşitli Transact-SQL veri tanımı dili (DDL) deyimlerine ve SQL İzleme olaylarına yanıt olarak bu olaylarla ilgili bilgileri bir Hizmet Aracısı hizmetine göndererek yürütülür.
Olay bildirimleri aşağıdakileri yapmak için kullanılabilir:
- Veritabanında gerçekleşen değişiklikleri veya etkinliği günlüğe kaydetme ve gözden geçirme.
- Bir olaya yanıt olarak zaman uyumlu bir eylem yerine zaman uyumsuz bir eylem gerçekleştirin.
Olay bildirimleri, DDL tetikleyicilerine ve SQL İzleme'ye bir programlama alternatifi sunabilir.
Olay bildirimlerinin avantajları
Olay bildirimleri, bir işlemin kapsamı dışında zaman uyumsuz olarak çalışır. Bu nedenle, DDL tetikleyicilerinden farklı olarak olay bildirimleri, anlık işlem tarafından tanımlanan herhangi bir kaynak kullanmadan olaylara yanıt vermek için veritabanı uygulamasında kullanılabilir.
SQL İzleme'nin aksine, olay bildirimleri sql izleme olayına yanıt olarak SQL Server örneğinde bir eylem gerçekleştirmek için kullanılabilir.
Olay verileri, ilerleme durumunu izlemek ve kararlar almak için SQL Server ile birlikte çalışan uygulamalar tarafından kullanılabilir. Örneğin, aşağıdaki olay bildirimi, örnek veritabanında her deyim verildiğinde ALTER TABLE belirli bir hizmete bir AdventureWorks2025 bildirim gönderir.
USE AdventureWorks2022;
GO
CREATE EVENT NOTIFICATION NotifyALTER_T1
ON DATABASE
FOR ALTER_TABLE
TO SERVICE '//Adventure-Works.com/ArchiveService',
'8140a771-3c4b-4479-8ac0-81008ab17984';
Olay bildirimleri kavramları
Bir olay bildirimi oluşturulduğunda, SQL Server örneği ile belirttiğiniz hedef hizmet arasında bir veya daha fazla Hizmet Aracısı görüşmesi açılır. Olay bildirimi sunucu örneğinde bir nesne olarak bulunduğu sürece konuşmalar genellikle açık kalır. Bazı hata durumlarında, olay bildirimi bırakılmadan önce konuşmalar kapatılabilir. Bu konuşmalar hiçbir zaman olay bildirimleri arasında paylaşılmaz. Her olay bildiriminin kendi özel konuşmaları vardır. Bir konuşmayı açıkça sonlandırmak hedef hizmetin daha fazla ileti almasını engeller ve olay bildirimi bir sonraki tetiklendiğinde konuşma yeniden açılmaz.
Olay bilgileri Hizmet Aracısı hizmetine, bir olayın ne zaman gerçekleştiği, etkilenen veritabanı nesnesi, ilgili Transact-SQL toplu iş deyimi ve diğer bilgiler hakkında bilgi sağlayan xml türünde bir değişken olarak teslim edilir. Olay bildirimleri tarafından oluşturulan XML şeması hakkında daha fazla bilgi için bkz. EVENTDATA.
Olay bildirimleri ve tetikleyiciler karşılaştırması
Aşağıdaki tablo tetikleyicileri ve olay bildirimlerini karşılaştırır ve karşılaştırır.
| Triggers | Olay Bildirimleri |
|---|---|
| DML tetikleyicileri veri işleme dili (DML) olaylarına yanıt verir. DDL tetikleyicileri veri tanımı dili (DDL) olaylarına yanıt verir. | Olay bildirimleri DDL olaylarına ve SQL izleme olaylarının bir alt kümesine yanıt verir. |
| Tetikleyiciler Transact-SQL veya ortak dil çalışma zamanı (CLR) yönetilen kodu çalıştırabilir. | Olay bildirimleri kod çalıştırmaz. Bunun yerine, bir Hizmet Aracısı hizmetine xml iletileri gönderir. |
| Tetikleyiciler, tetiklenmelerine neden olan işlemler kapsamında zaman uyumlu olarak işlenir. | Olay bildirimleri zaman uyumsuz olarak işlenebilir ve bunların tetiklenmesine neden olan işlemler kapsamında çalıştırılmayabilir. |
| Tetikleyicinin tüketicisi, tetiklemesine neden olan olayla sıkı bir şekilde ilişkilendirilir. | Bir olay bildiriminin tüketicisi, tetiklenmelerine neden olan olaydan ayrılmıştır. |
| Tetikleyiciler yerel sunucuda işlenmelidir. | Olay bildirimleri uzak bir sunucuda işlenebilir. |
| Tetikleyiciler geri alınabiliyor. | Olay bildirimleri geri alınamaz. |
| DML tetikleyici adları şema kapsamlıdır. DDL tetikleyici adları veritabanı kapsamlı veya sunucu kapsamlıdır. | Olay bildirim adlarının kapsamı sunucu veya veritabanı tarafından belirlenmiş. QUEUE_ACTIVATION olaydaki olay bildirimlerinin kapsamı belirli bir kuyrukla belirlenmiştir. |
| DML tetikleyicileri, uygulandıkları tablolarla aynı sahipe aittir. | Kuyrukta bir olay bildiriminin sahibi, uygulandığı nesneden farklı bir sahipe sahip olabilir. |
Tetikleyiciler yan tümcesini EXECUTE AS destekler. |
Olay bildirimleri yan tümcesini EXECUTE AS desteklemez. |
| DDL tetikleyicisi olay bilgileri, xml veri türü döndüren EVENTDATA işlevi kullanılarak yakalanabilir. | Olay bildirimleri , xml olay bilgilerini bir Hizmet Aracısı hizmetine gönderir. Bilgiler, EVENTDATA işlevininkiyle aynı şemaya biçimlendirilir. |
Tetikleyicilerle ilgili meta veriler ve sys.triggers katalog görünümlerinde sys.server_triggers bulunur. |
Olay bildirimleriyle ilgili meta veriler ve sys.event_notifications katalog görünümlerinde sys.server_event_notifications bulunur. |
İzleme vs. SQL olay bildirimleri
Aşağıdaki tablo, sunucu olaylarını izlemek için olay bildirimlerini ve SQL İzleme'yi kullanarak karşılaştırır ve karşıtlık sağlar.
| SQL İzleme | Olay Bildirimleri |
|---|---|
| SQL İzleme, işlemlerle ilişkili performans yükü oluşturmaz. Verilerin paketlenmesi verimlidir. | XML biçimli olay verilerini oluşturma ve olay bildirimi gönderme ile ilişkili performans ek yükü vardır. |
| SQL İzleme herhangi bir izleme olay sınıfını izleyebilir. | Olay bildirimleri, izleme olay sınıflarının bir alt kümesini ve ayrıca tüm veri tanımı dili (DDL) olaylarını izleyebilir. |
| İzleme olayında oluşturulacak veri sütunlarını özelleştirebilirsiniz. | Olay bildirimleri tarafından döndürülen XML biçimli olay verilerinin şeması düzeltildi. |
| DDL deyiminin geri alınıp alınmadığına bakılmaksızın, DDL tarafından oluşturulan izleme olayları her zaman oluşturulur. | İlgili DDL deyimindeki olay geri alınırsa olay bildirimleri tetiklenmez. |
| İzleme olayı verilerinin ara akışını yönetmek için izleme dosyalarının veya izleme tablolarının doldurulması ve yönetilmesi gerekir. | Olay bildirim verilerinin ara yönetimi, Hizmet Aracısı kuyrukları aracılığıyla otomatik olarak gerçekleştirilir. |
| İzlemeler, sunucu her yeniden başlatıldığında yeniden başlatılmalıdır. | Kaydedildikten sonra, olay bildirimleri sunucu döngüleri arasında kalır ve işlenir. |
| Başlatıldıktan sonra, izlemelerin tetiklenmeleri denetlenemez. Durdurma süreleri ve filtre süreleri, ne zaman başlatılacağını belirtmek için kullanılabilir. İzlemelere ilgili izleme dosyası yoklanarak erişilir. | Olay bildirimleri, olay bildirimi tarafından oluşturulan iletiyi alan kuyruğa karşı deyimi kullanılarak WAITFOR denetlenebilir. Kuyruğu yoklayarak bunlara erişilebilir. |
ALTER TRACE , izleme oluşturmak için gereken en az izindir. İlgili bilgisayarda bir izleme dosyası oluşturmak için de izin gereklidir. |
En az izin, oluşturulan olay bildiriminin türüne bağlıdır.
RECEIVE ayrıca ilgili kuyrukta da izin gereklidir. |
| İzlemeler uzaktan alınabiliyor. | Olay bildirimleri uzaktan alınabiliyor. |
| İzleme olayları, sistem saklı yordamları kullanılarak uygulanır. | Olay bildirimleri, Veritabanı Altyapısı ve Hizmet Aracısı Transact-SQL deyimlerinin birleşimi kullanılarak uygulanır. |
| İzleme olayı verilerine ilgili izleme tablosu sorgulanarak, izleme dosyası ayrıştırılarak veya SQL Server Yönetim Nesneleri (SMO) TraceReader Sınıfı kullanılarak program aracılığıyla erişilebilir. | Olay verilerine, XML biçimli olay verilerine karşı XQuery vererek veya SMO Olay sınıfları kullanılarak program aracılığıyla erişilir. |
Olay bildirim görevleri
| Görev | Article |
|---|---|
| Olay bildirimlerinin nasıl oluşturulacağını ve uygulanacağını açıklar. | Olay Bildirimlerini Uygulama |
| Uzak sunucudaki bir hizmet aracısına ileti gönderen olay bildirimleri için Hizmet Aracısı iletişim kutusu güvenliğinin nasıl yapılandırılacağını açıklar. | Olay Bildirimleri için İletişim Kutusu Güvenliğini Yapılandır |
| Olay bildirimleri hakkındaki bilgilerin nasıl döndürüleceği açıklanır. | Olay Bildirimleri Hakkında Bilgi Alma |