OLAY bildirimi (Transact-sql) oluştur

Service broker hizmeti için bir veritabanı veya sunucu olay hakkında bilgi gönderen bir nesne oluşturur. Olay bildirimleri yalnızca kullanılarak oluşturulan Transact-SQLdeyimleri.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

CREATE EVENT NOTIFICATION event_notification_name 
ON { SERVER | DATABASE | QUEUE queue_name } 
[ WITH FAN_IN ]
FOR { event_type | event_group } [ ,...n ]
TO SERVICE 'broker_service' , { 'broker_instance_specifier' | 'current database' }
[ ; ]

Bağımsız değişkenler

  • event_notification_name
    Olay bildirim adıdır. Olay bildirim adının kuralları uymanız gerekir tanımlayıcıları ve onlar oluşturulduğu kapsamı içinde benzersiz olmalıdır: sunucu, veritabanı, ya da object_name.

  • SUNUCU
    Olay bildirim kapsamı geçerli örneğine uygulanan SQL Server. for yan tümcesi belirtilen olay herhangi bir yerde örneğinde oluştuğunda bildirim belirttiyseniz, yangınlar SQL Server.

    [!NOT]

    Bu seçenek içerilen bir veritabanında kullanılamaz.

  • DATABASE
    Olay bildirim kapsamı geçerli veritabanına uygulanır. Geçerli veritabanında for yan tümcesi belirtilen olay oluştuğunda bildirim belirttiyseniz, patlar.

  • SIRA
    Tebliğ kapsamı, geçerli veritabanındaki belirli bir sıra için geçerlidir. Sadece eğer QUEUE_ACTIVATION ya da for BROKER_QUEUE_DISABLED de belirtilen sıra belirtilebilir.

  • queue_name
    Olay bildirim uygulandığı sıra addır. queue_nameSIRA belirtilmezse yalnızca belirtilebilir.

  • İLE FAN_IN
    Bildirir SQL Serverhizmeti tüm olay bildirimleri için belirtilen olay başına yalnızca bir ileti göndermek için:

    • Aynı olayı oluşturulur.

    • Aynı sorumlusu tarafından (aynı SID tarafından tanımlanan şekilde) oluşturulur.

    • Aynı hizmeti belirtin ve broker_instance_specifier.

    • FAN_IN ile belirtin.

    Örneğin, üç olay bildirimleri oluşturulur. Tüm olay bildirimlerini Databasefor ALTER_TABLETO, FAN_IN ile aynı hizmeti yan tümcesinde belirtin ve aynı SID tarafından oluşturulur. alter table deyimi çalıştırıldığında, bu üç olay bildirimleri tarafından oluşturulan iletileri tek bir birleştirilir. Bu nedenle, hedef hizmeti olay yalnızca bir ileti alır.

  • event_type
    Yürütmek olay bildirimi neden olan bir olay türü addır. event_typeolabilir a Transact-SQLddl olay türü, bir sql izleme olay türü ya da bir Service BrokerOlay türü. Eleme listesi için Transact-SQLbkz: ddl olay türleri, ddl olayları. Service Brokerolay türleri, QUEUE_ACTIVATION ve BROKER_QUEUE_DISABLED vardır. Daha fazla bilgi için, bkz. Olay bildirimleri.

  • event_group
    Önceden tanımlanmış bir grup adı Transact-SQLveya sql izleme olay türleri. Olay bildirimi yürütme bir olay grubuna ait herhangi bir olay sonra ateş. ddl olay grupları listesi için Transact-SQLonlar kapağı, olaylar ve hangi onlar tanımlanabilir, kapsam ddl olay grupları.

    event_groupOlay bildirim oluşturma deyimi sona erdiğinde de makro eylemleri, olay türleri ekleyerek için gelebilmektedir sys.events Katalog görünümü.

  • 'broker_service'
    Olay örneği veri alan hedef hizmeti belirtir. SQL Serverolay bildirimi için hedef hizmeti bir veya daha fazla görüşme açılır. Bu hizmet aynı onur gerekir SQL Serverolaylar mesaj tipi ve ileti göndermek için kullanılan sözleşme.

    Olay bildirimini bırakılan kadar konuşmaları açık kalır. Belirli hataları daha önce kapatmak konuşmaları neden olabilir. Biten bazı ya da tüm konuşmaları açıkça hedef hizmeti daha fazla ileti almasını engelleyebilir.

  • { 'broker_instance_specifier' | 'geçerli veritabanı' }
    Hizmet broker örneği karşı olan belirtir broker_serviceçözümlenir. Özel hizmet broker değeri sorgulama yaparak elde edilebilir service_broker_guidFROM sütununda sys.databases Katalog görünümü. Kullanım 'geçerli veritabanı' geçerli veritabanındaki service broker örneği belirtmek için. 'geçerli veritabanı' duyarlı dize hazır bilgi olduğunu.

    [!NOT]

    Bu seçenek içerilen bir veritabanında kullanılamaz.

Açıklamalar

Service Brokerbir ileti türü ve sözleşme için olay bildirimleri içerir. Bu nedenle, biri zaten varolduğundan oluşturulacak başlatan hizmet yok bir Service Broker aşağıdaki sözleşme adı belirtir.https://schemas.microsoft.com/SQL/Notifications/PostEventNotification

Olay bildirimlerini alır hedef hizmet preexisting bu sözleşme onur gerekir.

Önemli notÖnemli

Service Brokeriletişim güvenliği, uzak sunucuda hizmet broker ileti göndermek olay bildirimleri için yapılandırılmalıdır. İletişim güvenliği güvenlik modeline göre el ile yapılandırılması gerekir. Daha fazla bilgi için, bkz. İletişim güvenliği olay bildirimleri için yapılandırma.

Bildirim etkinleştiren bir olay işlem geri alınır, olay bildirimi gönderilmesi de geri alınır. Olay bildirimleri, ne zaman hareket tamamlandıktan veya geri tetikleyici içinde tanımlanmış tetikleyici eylem tarafından yangın değil. İzleme olayları hareketler tarafından bağlı değildir çünkü olay bildirimlerini izleme olayları temel alan olup onları etkinleştirir işlem geri alınır bağımsız olarak gönderilir.

Sunucu ve hedef hizmeti arasındaki konuşma kırık ise olay bildirim patlar, bir hata bildirdi ve olay bildirimini bırakılan sonra.

İlk bildirim başlatıldı olay hareketi, başarı veya başarısızlık olay bildirim gönderme tarafından etkilenmez.

Olay bildirim göndermek için herhangi bir hata kaydedilir.

İzinler

Veritabanına (on database), kapsamlı bir olay bildirimini oluşturmak için geçerli veritabanında create database ddl olay uyarısı izni gerektirir.

Sunucuya (on server), kapsamlı bir ddl deyimi bir olay bildirimini oluşturmak için sunucu ddl olay bildirim oluşturma izni gerektirir.

Bir izleme olayı, olay bildirimini oluşturmak için sunucudaki create trace olay uyarısı izni gerektirir.

Sıraya, kapsamlı bir olay bildirimini oluşturmak için sıraya alter izni gerektirir.

Örnekler

[!NOT]

a ve b GUID aşağıdaki örneklerde TO SERVICE 'NotifyService'yan tümcesi ('8140a771-3c4b-4479-8ac0-81008ab17984') üzerinde elbise örnek bilgisayarda belirli Bu örneği için GUID oldu AdventureWorks2012veritabanı.

Kopyalayın ve bu örnekleri çalıştırmak için bir bilgisayar bu GUID değiştirmeniz gerekiyor ve SQL Serverörneği. Bağımsız değişkenler yukarıdaki bölümde açıklandığı gibi elde edebilirsiniz 'broker_instance_specifier' sorgulayarak service_broker_guidsütununda sys.databasesKatalog görünümü.

A.Olay bildirim oluşturma kapsamı sunucusudur

Aşağıdaki örnek, bir hedef hizmeti kullanarak ayarlamak için gerekli nesneleri oluşturur Service Broker. Hedef hizmet, özellikle olay bildirimleri için başlatan hizmetin sözleşme ve ileti türünü başvurur. Daha sonra bir bildirim gönderir, hedef hizmeti olay bildirimi oluşturulan her bir Object_Createdörneği üzerinde izleme olay olur SQL Server.

--Create a queue to receive messages.
CREATE QUEUE NotifyQueue ;
GO
--Create a service on the queue that references
--the event notifications contract.
CREATE SERVICE NotifyService
ON QUEUE NotifyQueue
([https://schemas.microsoft.com/SQL/Notifications/PostEventNotification]);
GO
--Create a route on the service to define the address 
--to which Service Broker sends messages for the service.
CREATE ROUTE NotifyRoute
WITH SERVICE_NAME = 'NotifyService',
ADDRESS = 'LOCAL';
GO
--Create the event notification.
CREATE EVENT NOTIFICATION log_ddl1 
ON SERVER 
FOR Object_Created 
TO SERVICE 'NotifyService',
    '8140a771-3c4b-4479-8ac0-81008ab17984' ;

B.Olay bildirim oluşturma kapsamı veritabanıdır

Aşağıdaki örnek önceki örnek olarak aynı hedef hizmeti olay bildirim oluşturur. Olay bildirim yangınlar sonra bir ALTER_TABLEOlay ortaya AdventureWorks2012örnek veritabanı.

CREATE EVENT NOTIFICATION Notify_ALTER_T1
ON DATABASE
FOR ALTER_TABLE
TO SERVICE 'NotifyService',
    '8140a771-3c4b-4479-8ac0-81008ab17984';

C.Olay bildirimi hakkında bilgi alma kapsamı sunucusudur

Aşağıdaki örnek sorgular sys.server_event_notificationsiçin olay bildirimi hakkında meta verileri Katalog görünümü log_ddl1sunucu kapsamı ile oluşturulmuş.

SELECT * FROM sys.server_event_notifications
WHERE name = 'log_ddl1';

D.Olay bildirimi hakkında bilgi alma kapsamı veritabanıdır

Aşağıdaki örnek sorgular sys.event_notificationsiçin olay bildirimi hakkında meta verileri Katalog görünümü Notify_ALTER_T1Veritabanı kapsam ile oluşturulmuş.

SELECT * FROM sys.event_notifications
WHERE name = 'Notify_ALTER_T1';

Ayrıca bkz.

Başvuru

OLAY bildirimi (Transact-sql) bırak

eventdata (Transact-sql)

sys.event_notifications (Transact-sql)

sys.server_event_notificationsWHERE (Transact-sql)

sys.Events (Transact-sql)

sys.server_events (Transact-sql)

Kavramlar

Olay bildirimleri