İLETİŞİM konuşma (Transact-SQL) başlamak
Bir hizmet bir iletişim başka bir hizmetbaşlar.Bir iletişim kutusu tam olarak bir kez-içinde-sıralı iki hizmet ileti sağlayan bir görüşme oluşur.
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
Bir değişken başlamak iletişim konuşma deyimdöndürülen yeni iletişim için sistem tarafından oluşturulan iletişim tutamacı depolamak için kullanılır.Değişken türünde olmalıdır uniqueidentifier.HİZMETİNDENinitiator_service_name
İletişim başlatan hizmet belirtir.Belirtilen ad geçerli veritabanında bir hizmet adı olması gerekir.Başlatıcı hizmet için belirtilen sıra hedef hizmet tarafından döndürülen iletileri ve bu konuşmada Hizmet Aracısı tarafından oluşturulan iletileri alır.HİZMET için 'target_service_name'
İle iletişim başlatmak hedef hizmet belirtir.target_service_name Türü olan nvarchar(256).Service Brokerbayt düzeyinde karşılaştırma eşleştirmek için kullandığı target_service_name dize.durum-hassas ve geçerli harmanlamadikkate almaz.service_broker_guid
hedefhizmetbarındıran veritabanını belirtir. hedefhizmet örnek birden çok veritabanını barındıran, sağlayarak belirli bir veritabanı ile kurabilir bir service_broker_guid.service_broker_guid Türü olan nvarchar(128).Bulmak için service_broker_guid bir veritabanı için veritabanında aşağıdaki sorguyu çalıştırın:
SELECT service_broker_guid FROM sys.databases WHERE database_id = DB_ID() ;
Hakkında daha fazla bilgi için Service Broker kimliği, bkz: Hizmet Aracısı kimlikleri yönetme.
'geçerli veritabanı'
Konuşma kullandığını belirtir service_broker_guid için geçerli bir veritabanı.ON SÖZLEŞMEcontract_name
Bu görüşme izleyen anlaşma belirtir.anlaşma geçerli veritabanında bulunması gerekir.hedefhizmet yeni belirtilen anlaşma görüşmelerinde kabul etmiyorsa Service Broker Konuşma bir hata iletisi döndürüyor Bu yan tümce atlandığında, konuşma adlı anlaşma takip varsayılan.RELATED_CONVERSATION **=**related_conversation_handle
Yeni iletişim kutusunda eklenecek varolan konuşma grubu belirtir.Bu yan tümce varsa, yeni iletişim tarafından belirtilen iletişim aynı konuşma grubu ait related_conversation_handle.related_conversation_handleYazmak için bir tür örtük olarak dönüştürülebilir olmalıdır uniqueidentifier.deyim başarısız related_conversation_handle değil başvuru varolan bir iletişim.RELATED_CONVERSATION_GROUP **=**related_conversation_group_id
Yeni iletişim kutusunda eklenecek varolan konuşma grubu belirtir.Bu yan tümce varsa, yeni iletişim kutusu tarafından belirtilen konuşma grubu eklenecek related_conversation_group_id.related_conversation_group_idYazmak için bir tür örtük olarak dönüştürülebilir olmalıdır uniqueidentifier.related_conversation_group_idMu başvuru varolan bir konuşma grubu hizmet broker oluşturur Yeni bir konuşma grubu ile belirtilen related_conversation_group_id ve bu konuşma grubuyeni iletişim ilişkilendirir.YAŞAM **=**dialog_lifetime
saat iletişim en fazla açık kalacağını belirtir.Yaşam süresi dolmadan önce iletişim başarıyla tamamlamak her iki bitiş açıkça iletişim sona ermelidir.dialog_lifetime Değer ifade, saniye.Yaşam türü olan int.Hiçbir yaşam yan tümce belirtildiğinde, iletişim yaşam süresi değeri olan int veri türü.ŞİFRELEME
örnek dışında gönderildiğinde bu iletişim kutusunda alınan ve gönderilen iletileri şifrelenmelidir olup olmadığını belirtir Microsoft SQL Server.Şifreli bir iletişim olan bir güvenli iletişim.Zaman şifreleme on = ve şifreleme desteklemek için gereken sertifikaları yapılandırılmış, Service Broker bir hata iletisi döndürürkonuşma.Gerekiyorsa şifreleme = 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 yan tümce yoksa, varsayılan değer açık'tır.İletişim güvenliği hakkında daha fazla bilgi için bkz: Hizmet Aracısı iletişim güvenliği.Not
Hizmetleri ile aynı örnek değiştirilen iletilerin SQL Server asla şifrelenir.Ancak, veritabanı ana anahtar ve şifreleme için sertifikaları konuşma Hizmetleri farklı veritabanlarında, şifreleme kullanan görüşmeleri için yine de gereklidir.Bu görüşme devam ederken veritabanları farklı örnek taşınır olay devam etmek görüşmeleri sağlar.
Açıklamalar
Tüm iletileri görüşme bir parçasıdır.Bu nedenle, başlatan bir hizmet hedefhizmetbir ileti göndermeden önce hedefhizmet konuşmaya başlaması gerekir. Mektup adresi başlamak iletişim konuşma deyim belirtilen bilgileri benzer; Service Brokerdoğru hizmetiletileri teslim etme bilgileri kullanır.HİZMET için yan tümce tümcesinde belirtilen hizmet iletilerinin gönderildiği adresidir.HİZMETİNİN yan tümce tümcesinde belirtilen hizmet yanıt iletilerinde kullanılan dönüş adresi ' dir.
' % S'hedefi hedef konuşma, iletişim konuşma başlamak aramak gerekmez.Service Brokerilk ileti iletişimindeki başlatıcıdan geldiğinde konuşma hedef veritabanında oluşturur.
Bir iletişim kutusu başlayan başlatan hizmetveritabanındaki konuşma uç noktası oluşturur, ancak ağ bağlantısı hedefhizmetbarındıran örnek oluşturmaz. Service Brokerilk ileti gönderilinceye kadar iletişim hedef ile iletişim kurmak değil.
BAŞLAMAK iletişim konuşma deyim ilgili konuşma veya ilgili konuşma grububelirtmediğinde Service Broker için yeni bir konuşma grubu oluştururyeni bir görüşme.
Service Brokergörüşmeler, rasgele gruplandırmalar izin vermez.Tüm görüşmeler konuşma grubu Başlatıcı ya da görüşme hedef olarak from yan tümce tümcesinde belirtilen hizmet olmalıdır.
İLETİŞİM KONUŞMAYA başla komutu içeren konuşma grubu kilitler dialog_handle döndürdü.Ne zaman komutu içeren bir RELATED_CONVERSATION_GROUP yan tümce konuşma grubu dialog_handle belirtilen konuşma grubu related_conversation_group_id parametresi.Ne zaman komutu içeren bir RELATED_CONVERSATION yan tümce konuşma grubu dialog_handle konuşma grubu ilişkili olduğu related_conversation_handle belirtilen.
BAŞLAMAK iletişim konuşma kullanıcı tanımlı bir işleviçinde geçerli değil.
İzinler
Bir iletişim kutusu başlamak için geçerli kullanıcı Al komutu ve belirtilen anlaşma başvurular izni from yan tümce belirtilen hizmet için sıraya izniniz olmalıdır.
Örnekler
A.Bir iletişim kutusu başlayan
Aşağıdaki örnek bir iletişim konuşmaya başlar ve iletişim kutusunda için tanımlayıcı depolar @dialog_handle.//Adventure-Works.com/ExpenseClienthizmet ve //Adventure-Works.com/Expenseshizmet İletişim anlaşmatakip//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şmaya başlar ve iletişim kutusunda için tanımlayıcı depolar @dialog_handle.//Adventure-Works.com/ExpenseClienthizmet ve //Adventure-Works.com/Expenseshizmet İletişim anlaşmatakip//Adventure-Works.com/Expenses/ExpenseSubmission. İletişim kutusu içindeki son konuşma komutu tarafından kapatılmadı, 60 saniye ile bir hata. 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 ;
C.Bir iletişim kutusu belirli broker örnekile başlayan
Aşağıdaki örnek bir iletişim konuşmaya başlar ve iletişim kutusunda için tanımlayıcı depolar @dialog_handle.//Adventure-Works.com/ExpenseClienthizmet ve //Adventure-Works.com/Expenseshizmet İletişim anlaşmatakip//Adventure-Works.com/Expenses/ExpenseSubmission. Broker GUID ile tanımlanan Aracısı 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] ;
D.Bir iletişim kutusu başlayan ve bir varolan konuşma grubuile ilgili
Aşağıdaki örnek bir iletişim konuşmaya başlar ve iletişim kutusunda için tanımlayıcı depolar @dialog_handle.//Adventure-Works.com/ExpenseClienthizmet ve //Adventure-Works.com/Expenseshizmet İletişim anlaşmatakip//Adventure-Works.com/Expenses/ExpenseSubmission. İletişim broker tarafından tanımlanan konuşma grubu ilişkilendirir @conversation_group_id Yeni bir konuşma grubuoluş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 ;
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şmaya başlar ve iletişim kutusunda için tanımlayıcı depolar @dialog_handle.//Adventure-Works.com/ExpenseClienthizmet ve //Adventure-Works.com/Expenseshizmet İletişim anlaşmatakip//Adventure-Works.com/Expenses/ExpenseSubmission. Yeni iletişim aynı konuşma grubu ait olan @existing_conversation_handle ait.İletişim kutusu içindeki son konuşma komutu tarafından kapatılmadı, 600 saniye, Service Broker sona erer iletişim kutusu görüntülenirken 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ı şifrelemeile başlayan
Aşağıdaki örnek bir iletişim başlar ve iletişim kutusunda için tanımlayıcı depolar @dialog_handle.//Adventure-Works.com/ExpenseClienthizmet ve //Adventure-Works.com/Expenseshizmet İletişim anlaşmatakip//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 ;