Share via


BEGIN DIALOG konuşma (Transact-sql)

Bir hizmet bir iletişim kutusunda başka bir hizmete başlıyor. Bir iletişim sağlayan tam bir kez-içinde-sipariş iki hizmet ileti görüşme oluşur.

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

Sözdizimi

BEGIN DIALOG [ CONVERSATION ] @dialog_handle
   FROM SERVICE initiator_service_name
   TO SERVICE 'target_service_name'
       [ , { 'service_broker_guid' | 'CURRENT DATABASE' }] 
   [ ON CONTRACT contract_name ]
   [ WITH
   [  { RELATED_CONVERSATION = related_conversation_handle 
      | RELATED_CONVERSATION_GROUP = related_conversation_group_id } ] 
   [ [ , ] LIFETIME = dialog_lifetime ] 
   [ [ , ] ENCRYPTION = { ON | OFF }  ] ]
[ ; ]

Bağımsız değişkenler

  • **@**dialog_handle
    Değişken BEGIN DIALOG konuşma deyimi tarafından döndürülen yeni iletişim için sistem tarafından oluşturulan iletişim kolu depolamak için kullanılır. Değişken türü olmalıdır uniqueidentifier.

  • HİZMETİNDENinitiator_service_name
    İletişim başlatan hizmeti belirtir. Belirtilen ad bir hizmetin geçerli veritabanında olmalıdır. Başlatıcı Hizmeti için belirtilen sıra hedef hizmet tarafından döndürülen iletileri ve bu konuşma için Service Broker tarafından oluşturulan iletileri alır.

  • HİZMET 'target_service_name'
    Hangi iletişim başlatmak hedef hizmeti belirtir. target_service_nameTürü nvarchar(256). Service Brokerbir bayt bayt karşılaştırma eşleştirmek için kullandığı target_service_namedize. Diğer bir deyişle, karşılaştırma duyarlıdır ve geçerli harmanlama dikkate almaz.

  • service_broker_guid
    Hedef hizmeti barındıran veritabanını belirtir. Birden fazla veritabanı örneği hedef hizmet barındırıldığında, sağlayarak belirli bir veritabanı ile iletişim kurabilen bir service_broker_guid.

    service_broker_guidTürü nvarchar(128). Bulmak için service_broker_guidbir veritabanı için veritabanı aşağıdaki sorguyu çalıştırın:

    SELECT service_broker_guid
    FROM sys.databases
    WHERE database_id = DB_ID() ;
    
    SELECT service_broker_guid
    FROM sys.databases
    WHERE database_id = DB_ID() ;
    

    [!NOT]

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

  • 'Veritabanı'
    Konuşma kullanmasını belirtir service_broker_guidgeçerli veritabanı için.

  • ON SÖZLEŞMEcontract_name
    Bu görüşme izleyen sözleşme belirtir. Sözleşme geçerli veritabanında bulunması gerekir. Hedef hizmet sözleşmesinde belirtilen yeni konuşmaları kabul etmiyorsa Service Brokerhata iletisi konuşma verir. Bu yan atlandığında, görüşme adlı sözleşme izleyen varsayılan.

  • RELATED_CONVERSATION **=**related_conversation_handle
    Yeni iletişim kutusunda eklenecek varolan bir konuşma grubu belirtir. Bu yan tümcesi varsa, yeni bir iletişim kutusu tarafından belirtilen iletişim aynı konuşma grubuna ait olduğu related_conversation_handle. related_conversation_handle Yazmak için bir tür örtük olarak dönüştürülebilir olmalıdır benzersiztanıtıcı. Eğer deyimi başarısız related_conversation_handleVarolan bir iletişim başvurmuyor.

  • RELATED_CONVERSATION_GROUP **=**related_conversation_group_id
    Yeni iletişim kutusunda eklenecek varolan bir konuşma grubu belirtir. Bu yan tümcesi varsa, yeni bir iletişim kutusu tarafından belirtilen konuşma grubu eklenir related_conversation_group_id. related_conversation_group_id Yazmak için bir tür örtük olarak dönüştürülebilir olmalıdır benzersiztanıtıcı. Eğer related_conversation_group_id mu değil başvuru service broker varolan bir görüşme Grup oluşturur Yeni bir görüşme Grup ile belirtilen related_conversation_group_idve bu konuşma gruba yeni iletişim ilgilidir.

  • ÖMÜR **=**dialog_lifetime
    İletişim kutusunu açık kalacağı en uzun süreyi belirtir. İletişim başarıyla tamamlamak, her iki bitiş süresi dolmadan önce iletişim açıkça bitmelidir. dialog_lifetimeDeğer saniye cinsinden ifade. Ömür boyu türüdür int. Hiçbir yaşam boyu yan tümcesi belirtildiğinde, iletişim yaşam süresi maksimum değeri ise intveri türü.

  • ENCRYPTION
    Örneği dışında gönderildiğinde bu iletişim kutusunda alınıp gönderilen iletileri şifrelenmelidir olup olmadığını belirtir Microsoft   SQL Server. Şifreli bir iletişim olduğunu bir güvenli iletişim. Zaman ENCRYPTION = on ve şifreleme desteği için gerekli sertifikaları değildir yapılandırılmış, Service Brokerkonuşma hata iletisi döndürür. Eğer ENCRYPTION = off, şifreleme için uzak hizmet bağlama yapılandırılmışsa kullanılır target_service_name; Aksi takdirde iletileri şifresiz gönderilir. Bu maddenin mevcut değilse, varsayılan değer açık'tır.

    [!NOT]

    Aynı örneği hizmetlerle değiş tokuş iletileri SQL Serverasla şifrelenir. Ancak, veritabanı ana anahtar ve şifreleme sertifikalarını hala Eğer konuşma hizmetleri farklı veritabanlarında şifreleme kullanan konuşmaları için gereklidir. Bu konuşmaları konuşma devam ederken veritabanını farklı bir örneği taşınır halinde devam etmek izin verir.

Açıklamalar

Tüm iletileri görüşme bir parçasıdır. Bu nedenle, başlatan hizmet hedef hizmeti ile bir konuşma için hedef hizmeti bir ileti göndermeden önce başlamalıdır. BEGIN DIALOG konuşma deyimi içinde belirtilen bilgileri bir mektup adresi benzer; Service Brokerbilgi iletileri için doğru hizmet sunmak için kullanır. HİZMET fıkrada belirtilen hizmet iletileri gönderilir adresidir. SERVICE from yan tümcesinde belirtilen yanıt iletileri için dönüş adresi hizmetidir.

Hedef konuşma BEGIN DIALOG konuşma aramaya gerek yoktur. Service Brokerilk ileti görüşme başlatıcı geldiğinde konuşma hedef veritabanında oluşturur.

İletişim kutusu başlayan konuşma son nokta için başlatan hizmet veritabanını oluşturur, ancak bir ağ bağlantısı için hedef hizmeti barındıran örneğine oluşturmaz. Service Brokerilk ileti gönderilene kadar iletişim hedefi ile iletişim kurmak değil.

BEGIN DIALOG konuşma deyimi ilgili bir konuşma ya da bir ilgili görüşme Grup belirtmediğinde Service Brokeryeni bir konuşma için yeni bir konuşma grubu oluşturur.

Service Brokerrasgele gruplandırmalar konuşmaları izin vermez. Görüşme grup içindeki tüm konuşmaları, from yan tümcesinde belirtilen başlatıcı ya da konuşma hedefi olarak hizmet olmalıdır.

BEGIN DIALOG konuşma komutu içeren konuşma grubu kilitler dialog_handledöndü. Ne zaman konuşma grubu için bir RELATED_CONVERSATION_GROUP yan tümcesi içerir komut dialog_handleiçinde belirtilen konuşma grubu related_conversation_group_idparametresi. Zaman komut içerir konuşma grubu için bir RELATED_CONVERSATION yan dialog_handlekonuşma grubu ile ilişkili olduğunu related_conversation_handlebelirtilen.

BEGIN DIALOG konuşma kullanıcı tanımlı bir işlev geçerli değil.

İzinler

Bir iletişim kutusu başlamak için geçerli kullanıcı komut ve belirtilen sözleşme başvurular izni from yan tümcesinde belirtilen hizmet için sıraya Al izni olmalıdır.

Örnekler

A.İletişim kutusu başlayan

Aşağıdaki örnek bir iletişim konuşma başlar ve iletişim için bir tanımlayıcı depolar @dialog\_handle. //Adventure-Works.com/ExpenseClienthizmetidir başlatıcı için iletişim ve //Adventure-Works.com/Expenseshizmetidir iletişim hedefi. İletişim sözleşmenin takip //Adventure-Works.com/Expenses/ExpenseSubmission.

DECLARE @dialog_handle UNIQUEIDENTIFIER ;

BEGIN DIALOG CONVERSATION @dialog_handle
   FROM SERVICE [//Adventure-Works.com/ExpenseClient]
   TO SERVICE '//Adventure-Works.com/Expenses'
   ON CONTRACT [//Adventure-Works.com/Expenses/ExpenseSubmission] ;

DECLARE @dialog_handle UNIQUEIDENTIFIER ;

BEGIN DIALOG CONVERSATION @dialog_handle
   FROM SERVICE [//Adventure-Works.com/ExpenseClient]
   TO SERVICE '//Adventure-Works.com/Expenses'
   ON CONTRACT [//Adventure-Works.com/Expenses/ExpenseSubmission] ;

B.Bir iletişim kutusu açık bir yaşam süresi ile başlayan

Aşağıdaki örnek bir iletişim konuşma başlar ve iletişim için bir tanımlayıcı depolar @dialog\_handle. //Adventure-Works.com/ExpenseClientHizmetidir başlatıcı için iletişim ve //Adventure-Works.com/Expenseshizmetidir iletişim hedefi. İletişim sözleşmenin takip //Adventure-Works.com/Expenses/ExpenseSubmission. İletişim kutusu içindeki end konuşma komutu tarafından kapatılmamış eğer 60saniye hata ile iletişim broker sonlandırır.

DECLARE @dialog_handle UNIQUEIDENTIFIER ;

BEGIN DIALOG CONVERSATION @dialog_handle
   FROM SERVICE [//Adventure-Works.com/ExpenseClient]
   TO SERVICE '//Adventure-Works.com/Expenses'
   ON CONTRACT [//Adventure-Works.com/Expenses/ExpenseSubmission]
   WITH LIFETIME = 60 ;

DECLARE @dialog_handle UNIQUEIDENTIFIER ;

BEGIN DIALOG CONVERSATION @dialog_handle
   FROM SERVICE [//Adventure-Works.com/ExpenseClient]
   TO SERVICE '//Adventure-Works.com/Expenses'
   ON CONTRACT [//Adventure-Works.com/Expenses/ExpenseSubmission]
   WITH LIFETIME = 60 ;

C.Bir iletişim kutusu belirli broker örneği ile başlayan

Aşağıdaki örnek bir iletişim konuşma başlar ve iletişim için bir tanımlayıcı depolar @dialog\_handle. //Adventure-Works.com/ExpenseClientHizmetidir başlatıcı için iletişim ve //Adventure-Works.com/Expenseshizmetidir iletişim hedefi. İletişim sözleşmenin takip //Adventure-Works.com/Expenses/ExpenseSubmission. Broker GUID ile tanımlanan broker için bu iletişim kutusundaki iletileri yönlendirena326e034-d4cf-4e8b-8d98-4d7e1926c904.

DECLARE @dialog_handle UNIQUEIDENTIFIER ;

BEGIN DIALOG CONVERSATION @dialog_handle
   FROM SERVICE [//Adventure-Works.com/ExpenseClient]
   TO SERVICE '//Adventure-Works.com/Expenses', 
              'a326e034-d4cf-4e8b-8d98-4d7e1926c904'
   ON CONTRACT [//Adventure-Works.com/Expenses/ExpenseSubmission] ;

DECLARE @dialog_handle UNIQUEIDENTIFIER ;

BEGIN DIALOG CONVERSATION @dialog_handle
   FROM SERVICE [//Adventure-Works.com/ExpenseClient]
   TO SERVICE '//Adventure-Works.com/Expenses', 
              'a326e034-d4cf-4e8b-8d98-4d7e1926c904'
   ON CONTRACT [//Adventure-Works.com/Expenses/ExpenseSubmission] ;

D.Bir iletişim kutusu başlayan ve varolan bir konuşma grubu ilgili

Aşağıdaki örnek bir iletişim konuşma başlar ve iletişim için bir tanımlayıcı depolar @dialog\_handle. //Adventure-Works.com/ExpenseClientHizmetidir başlatıcı için iletişim ve //Adventure-Works.com/Expenseshizmetidir iletişim hedefi. İletişim sözleşmenin takip //Adventure-Works.com/Expenses/ExpenseSubmission. Broker iletişim konuşma grubuyla ilişkilendirir @conversation\_group\_idyeni bir konuşma grubu oluşturmak yerine.

DECLARE @dialog_handle UNIQUEIDENTIFIER ;
DECLARE @conversation_group_id UNIQUEIDENTIFIER ;

SET @conversation_group_id = <retrieve conversation group ID from database>

BEGIN DIALOG CONVERSATION @dialog_handle
   FROM SERVICE [//Adventure-Works.com/ExpenseClient]
   TO SERVICE '//Adventure-Works.com/Expenses'
   ON CONTRACT [//Adventure-Works.com/Expenses/ExpenseSubmission]
   WITH RELATED_CONVERSATION_GROUP = @conversation_group_id ;

DECLARE @dialog_handle UNIQUEIDENTIFIER ;
DECLARE @conversation_group_id UNIQUEIDENTIFIER ;

SET @conversation_group_id = <retrieve conversation group ID from database>

BEGIN DIALOG CONVERSATION @dialog_handle
   FROM SERVICE [//Adventure-Works.com/ExpenseClient]
   TO SERVICE '//Adventure-Works.com/Expenses'
   ON CONTRACT [//Adventure-Works.com/Expenses/ExpenseSubmission]
   WITH RELATED_CONVERSATION_GROUP = @conversation_group_id ;

E.Bir iletişim kutusu açık bir yaşam süresi ile başlayan ve iletişim kutusu varolan konuşmaya ilgili

Aşağıdaki örnek bir iletişim konuşma başlar ve iletişim için bir tanımlayıcı depolar @dialog\_handle. //Adventure-Works.com/ExpenseClientHizmetidir başlatıcı için iletişim ve //Adventure-Works.com/Expenseshizmetidir iletişim hedefi. İletişim sözleşmenin takip //Adventure-Works.com/Expenses/ExpenseSubmission. Yeni iletişim aynı ait olduğu konuşma grubu @existing\_conversation\_handleait. İletişim kutusu içindeki end konuşma komutu tarafından kapatılmamış eğer 600ikinci, Service Brokerhata iletişim biter.

DECLARE @dialog_handle UNIQUEIDENTIFIER
DECLARE @existing_conversation_handle UNIQUEIDENTIFIER

SET @existing_conversation_handle = <retrieve conversation handle from database>

BEGIN DIALOG CONVERSATION @dialog_handle
   FROM SERVICE [//Adventure-Works.com/ExpenseClient]
   TO SERVICE '//Adventure-Works.com/Expenses'
   ON CONTRACT [//Adventure-Works.com/Expenses/ExpenseSubmission]
   WITH RELATED_CONVERSATION = @existing_conversation_handle
   LIFETIME = 600 ;

DECLARE @dialog_handle UNIQUEIDENTIFIER
DECLARE @existing_conversation_handle UNIQUEIDENTIFIER

SET @existing_conversation_handle = <retrieve conversation handle from database>

BEGIN DIALOG CONVERSATION @dialog_handle
   FROM SERVICE [//Adventure-Works.com/ExpenseClient]
   TO SERVICE '//Adventure-Works.com/Expenses'
   ON CONTRACT [//Adventure-Works.com/Expenses/ExpenseSubmission]
   WITH RELATED_CONVERSATION = @existing_conversation_handle
   LIFETIME = 600 ;

F.İletişim kutusu isteğe bağlı şifreleme ile başlayan

Aşağıdaki örnek bir iletişim başlıyor ve iletişim için bir tanımlayıcı depolar @dialog\_handle. //Adventure-Works.com/ExpenseClientHizmetidir başlatıcı için iletişim ve //Adventure-Works.com/Expenseshizmetidir iletişim hedefi. İletişim sözleşmenin takip //Adventure-Works.com/Expenses/ExpenseSubmission. Bu örnekte konuşma iletiyi şifreleme kullanılabilir değilse, ağ üzerinden şifreleme olmadan seyahat sağlar.

DECLARE @dialog_handle UNIQUEIDENTIFIER

BEGIN DIALOG CONVERSATION @dialog_handle
   FROM SERVICE [//Adventure-Works.com/ExpenseClient]
   TO SERVICE '//Adventure-Works.com/Expenses'
   ON CONTRACT [//Adventure-Works.com/Expenses/ExpenseSubmission]
   WITH ENCRYPTION = OFF ;

DECLARE @dialog_handle UNIQUEIDENTIFIER

BEGIN DIALOG CONVERSATION @dialog_handle
   FROM SERVICE [//Adventure-Works.com/ExpenseClient]
   TO SERVICE '//Adventure-Works.com/Expenses'
   ON CONTRACT [//Adventure-Works.com/Expenses/ExpenseSubmission]
   WITH ENCRYPTION = OFF ;

Ayrıca bkz.

Başvuru

Konuşma süreölçer (Transact-sql) başlar

move konuşma (Transact-sql)

move konuşma (Transact-sql)

sys.conversation_endpoints (Transact-sql)