Aracılığıyla paylaş


DIALOG KONUşMA (Transact-SQL) BEGIN

Başka bir hizmet için bir iletişim kutusundan bir hizmeti başlatır.Bir iletişim kutusu tam olarak-bir kez-sıralı iki hizmet ileti sağlayan görüşme oluşur.

Topic link iconTransact-SQL sözdizimi kuralları

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
    Bir değişken BEGIN DIALOG konuşma deyim ile verilen yeni iletişim kutusu için sistem tarafından oluşturulan iletişim tanıtıcı depolamak için kullanılır.Değişken türünde olmalıdır uniqueidentifier.

  • HİZMET initiator_service_name
    İletişim başlatan hizmet belirtir.Belirtilen ad, geçerli veritabanındaki bir hizmet adı olması gerekir.Başlatıcı Hizmeti için belirtilen sıra hedef hizmet tarafından döndürülen iletileri ve bu konuşma için Hizmet Aracısı tarafından oluşturulan iletileri alır.

  • Hizmet için **'**target_service_name '
    İletişim başlatmak, hedef hizmet belirtir.The target_service_name is of type nvarchar(256).Service Broker uses a byte-by-byte comparison to match the target_service_name string.Diğer bir deyişle, karşılaştırma, küçük durum duyarlıdır ve geçerli harmanlama dikkate almaz.

  • service_broker_guid
    Hedef hizmet barındıran veritabanını belirtir.Daha sonra farklı bir veritabanına ana bir örnek hedef hizmet sağlayarak belirli bir veritabanı ile kurabilir birservice_broker_guid.

    The service_broker_guid is of type nvarchar(128).Bulmak içinservice_broker_guidbir veritabanı için aşağıdaki sorguyu veritabanında çalıştırın:

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

    Daha fazla bilgiService Brokerkimliği, bkz:Service Broker kimlikleri yönetme.

  • **'**CURRENT DATABASE '
    Görüşme kullanan belirtirservice_broker_guidGeçerli veritabanı.

  • contract_name anlaşma ON
    Bu konuşmayı izleyen anlaşma belirtir.anlaşma geçerli veritabanında bulunması gerekir.Hedef hizmet kabul yeni belirtilen anlaşma görüşmelerindeService BrokerKonuşma. bir hata iletisi döndürüyor, Bu yan tümce olan atlanırsa görüşme adlı anlaşma takipDEFAULT.

  • RELATED_CONVERSATION **=**related_conversation_handle
    Varolan belirtir konuşma grubu eklenen yeni iletişim kutusu.Bu yan tümcesi varsa, yeni iletişim kutusu aynı ait konuşma grubu olarak belirtilen iletişimrelated_conversation_handle.The related_conversation_handlemust be of a type implicitly convertible to type uniqueidentifier.deyim, başarısızrelated_conversation_handleolmayan başvuru varolan bir iletişim.

  • RELATED_CONVERSATION_GROUP **=**related_conversation_group_id
    Varolan belirtir konuşma grubu eklenen yeni iletişim kutusu., Bu yan tümce varsa, yeni iletişim kutusu tarafından belirtilen konuşma grubuna eklenenrelated_conversation_group_id.The related_conversation_group_idmust be of a type implicitly convertible to type uniqueidentifier.If related_conversation_group_iddoes not reference an existing conversation group, the service broker creates a new conversation group with the specified related_conversation_group_id and relates the new dialog to that conversation group.

  • LIFETIME **=**dialog_lifetime
    İletişim kutusunun açık kalması en uzun süreyi belirtir.Başarıyla tamamlamak iletişim için her iki bitiş süresi sona ermeden önce iletişim açıkça bitmelidir.The dialog_lifetime value must be expressed in seconds.Yaşam süresi olan türüint.Yaşam süresi hiçbir zaman yan tümce belirtilmişse, iletişim yaşam süresi değeri olanintveri türü.

  • Şifreleme
    Specifies whether or not messages sent and received on this dialog must be encrypted when they are sent outside of an instance of Microsoft SQL Server.Şifrelenmelidir bir iletişim kutusu birGüvenli iletişim., Şifreleme ON = şifreleme desteklemek için gereken sertifika yok ve yapılandırılmış,Service BrokerKonuşma. bir hata iletisi döndürüyor, Şifreleme = OFF, şifreleme kullanıldığında uzak hizmet bağlaması için yapılandırılmışsa,target_service_name; aksi halde iletiler şifrelenmemiş gönderilir.Bu yan tümce olduğu yok, varsayılan değer açık'tır.İletişim güvenliği ile ilgili daha fazla bilgi için bkz:Service Broker iletişim güvenliği.

    Not

    İleti alışverişi hizmetleriyle aynı örneğindeSQL Serverher zaman şifrelenir.Ancak, bir veritabanı yöneticisi anahtar ve şifreleme sertifikalarını hala görüşme hizmetlerini farklı veritabanlarında, şifreleme kullanan görüşmeleri için gereklidir.Bu görüşme, görüşme sürerken veritabanlarını biri için farklı örnek taşınır olay, devam etmek izin verir.

Remarks

Tüm iletiler bir parçasıdır.Bu nedenle, bir başlatma hizmet hedef hizmetine bir ileti göndermeden önce hedef hizmet ile bir görüşme başlaması gerekir.DIALOG konuşma BEGIN deyiminde belirtilen bilgi; mektup adresinde benzer.Service Brokeriletiler için teslim bilgileri kullanır. doğru hizmet.Hizmet için hizmeti belirtilen yan tümce iletilerinin gönderildiği adresidir.Hizmet, FROM yan tümcesinde belirtilen yanıt iletileri için kullanılan dönüş adresini hizmettir.

The target of a conversation does not need to call BEGIN DIALOG CONVERSATION.Service Broker creates a conversation in the target database when the first message in the conversation arrives from the initiator.

Beginning a dialog creates a conversation endpoint in the database for the initiating service, but does not create a network connection to the instance that hosts the target service.Service Broker does not establish communication with the target of the dialog until the first message is sent.

deyim, BEGIN DIALOG konuşma yapacağını değil belirtin ilgili bir konuşma veya ilgili konuşma grubu,Service BrokerYeni konuşma. yeni bir konuşma grubu oluşturur.

Service Broker görüşmeler, rasgele grupları izin vermez.konuşma grubu içindeki tüm görüşmeler FROM belirtilen hizmet olmalıdır yan tümce başlatan ya da görüşme hedefi.

BEGIN DIALOG konuşma komutu kilitler içeren konuşma grubudialog_handledöndü.Sonra komutu içeren bir RELATED_CONVERSATION_GROUP yan tümce için konuşma grubudialog_handlebelirtilen konuşma gruburelated_conversation_group_idparametre.Sonra komutu içeren bir RELATED_CONVERSATION yan tümce için konuşma grubudialog_handleKonuşma grubunun ilişkili olduğurelated_conversation_handlebelirtilen.

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

İzinler

Bir iletişim kutusu başlamak için geçerli kullanıcının Al komutu belirtilen anlaşma için başvurular izni, FROM yan tümcesinde belirtilen hizmet için sıraya izniniz olmalıdır.

Örnekler

C.Bir iletişim kutusu başlangıç

The following example begins a dialog conversation and stores an identifier for the dialog in @dialog\_handle. The //Adventure-Works.com/ExpenseClient service is the initiator for the dialog, and the //Adventure-Works.com/Expenses service is the target of the dialog.İletişim kutusu aşağıdaki anlaşma//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, iletişim görüşme başlar ve depolar iletişim kutusunda tanımlayıcısı@dialog_handle.The //Adventure-Works.com/ExpenseClient service is the initiator for the dialog, and the //Adventure-Works.com/Expenses service is the target of the dialog.İletişim kutusu aşağıdaki anlaşma//Adventure-Works.com/Expenses/ExpenseSubmission.İletişim kapatılmamış içinde END konuşma komutu ile60saniye, bir hata. iletişim broker sona

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 bir öğe örneğiyle başlangıç

Aşağıdaki örnek, iletişim görüşme başlar ve depolar iletişim kutusunda tanımlayıcısı@dialog_handle.The //Adventure-Works.com/ExpenseClient service is the initiator for the dialog, and the //Adventure-Works.com/Expenses service is the target of the dialog.İletişim kutusu aşağıdaki anlaşma//Adventure-Works.com/Expenses/ExpenseSubmission.GUID ile tanımlanan öğe için bu iletişim kutusundaki öğe yolları iletileri a326e034-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] ;

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

Aşağıdaki örnek, iletişim görüşme başlar ve depolar iletişim kutusunda tanımlayıcısı@dialog_handle.The //Adventure-Works.com/ExpenseClient service is the initiator for the dialog, and the //Adventure-Works.com/Expenses service is the target of the dialog.İletişim kutusu aşağıdaki anlaşma//Adventure-Works.com/Expenses/ExpenseSubmission.Aracısı iletişim kutusunda tanımlanan konuşma grubu ile ilişkilendirir@conversation_group_idoluşturmaktan yeni konuşma grubu.

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 kutusunda, varolan bir konuşmaya ile ilgili

Aşağıdaki örnek, iletişim görüşme başlar ve depolar iletişim kutusunda tanımlayıcısı@dialog_handle.The //Adventure-Works.com/ExpenseClient service is the initiator for the dialog, and the //Adventure-Works.com/Expenses service is the target of the dialog.İletişim kutusu aşağıdaki anlaşma//Adventure-Works.com/Expenses/ExpenseSubmission.Yeni iletişim kutusu aynı ait konuşma grubu@existing_conversation_handleait.İletişim kapatılmamış içinde END konuşma komutu ile600saniyeService BrokerBitiş iletişim kutusunda bir hata.

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.Bir iletişim kutusu isteğe bağlı şifreleme ile başlayan

Aşağıdaki örnek, bir iletişim kutusu başlar ve depolar iletişim kutusunda tanımlayıcısı@dialog_handle.The //Adventure-Works.com/ExpenseClient service is the initiator for the dialog, and the //Adventure-Works.com/Expenses service is the target of the dialog.İletişim kutusu aşağıdaki anlaşma//Adventure-Works.com/Expenses/ExpenseSubmission.Bu örnekte konuşma ileti şifrelemesi olmaksızın ağ üzerinden şifreleme yoksa gezinmesini 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 ;