SEND (Transact-sql)

Bir veya daha fazla varolan konuşmaları kullanarak bir ileti gönderir.

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

Sözdizimi

SEND
   ON CONVERSATION [(]conversation_handle [,.. @conversation_handle_n][)]
   [ MESSAGE TYPE message_type_name ]
   [ ( message_body_expression ) ]
[ ; ]

Bağımsız değişkenler

  • KONUŞMAconversation_handle [.. @conversation\_handle\_n\]
    İleti ait konuşmaları belirtir. conversation_handleGeçerli konuşma tanıtıcı içermelidir. Aynı konuşma tanıtıcı birden çok kez kullanılamaz.

  • İLETİ TÜRÜmessage_type_name
    Gönderilen iletiyi ileti türünü belirtir. Bu ileti türü bu konuşmaları tarafından kullanılan hizmet sözleşmeleri dahil edilmelidir. Bu sözleşmeler, konuşma bu taraftan gönderilecek ileti türü izin vermesi gerekir. Örneğin, konuşmaları hedef Hizmetleri yalnızca hedef tarafından gönderilen veya any tarafından gönderilen olarak sözleşmede belirtilen iletileri gönderebilir. Bu yan tümcesi atlanırsa, varsayılan ileti türünü iletisidir.

  • message_body_expression
    İleti gövdesini temsil eden bir ifade sağlar. message_body_expressionOpsiyoneldir. Ancak, eğer message_body_expressionmevcut ifade bir türü, dönüştürülebilir olmalıdır varbinary(max). İfade null olamaz. Bu yan tümcesi atlanırsa, ileti gövdesi boş olur.

Açıklamalar

Önemli notÖnemli

send deyimi ilk deyimi bir toplu iş veya saklı yordam değilse, önceki deyimi bir noktalı virgül ile tamamlanmalıdır (;).

send deyimi hizmetler bir veya daha fazla bir ucunda bir mesaj ilettiği Service Brokerkonuşmaları hizmetleri bu konuşmalar diğer ucunda. Al deyimi sonra hedef hizmetlerle ilgili sıraları gönderilen mesaj almak için kullanılır.

AÇIK görüşme yan sağlanan konuşma işleme üç kaynaktan birinde gelir:

  • Başka bir hizmetinden alınan bir iletiye yanıt olarak değil bir ileti gönderirken, görüşme oluşturulan BEGIN DIALOG ekstresindeki döndürülen konuşma tutamacını kullanın.

  • Bir daha önce başka bir hizmetinden alınan bir iletiye yanıt olarak bir ileti gönderirken, özgün ileti döndürülen Al deyimi tarafından döndürülen konuşma tutamacını kullanın.

Birçok durumda, send deyimi içeren konuşma tanıtıcı sağlayan BEGIN DIALOG veya Al deyimleri içeren kodu ayrı kodudur. Bu gibi durumlarda, konuşma tanıtıcı send deyimi içeren kod geçirilen durum bilgisi veri öğeleri olmalıdır.

Hizmet diğer örneklerini gönderilen iletileri SQL Server Veritabanı Altyapısıkadar uzak durumlarda hizmeti sıralarına gönderilebilir bir iletim sırasında geçerli veritabanında depolanır. Hizmetleri aynı örneği gönderilen iletilerin Veritabanı Altyapısıiçine doğrudan bu hizmetlerle ilgili sıralara koydu. Bir koşulu Yerel ileti doğrudan hedef hizmet sırasına koymak engelliyorsa, durum çözülünceye kadar iletim sırada depolanabilir. Bu oluştuğunda hataları veya etkin olma hedefi hizmet sıra bazı tür örnekler. Sen-ebilmek kullanma sys.transmission_queueiletim sırasındaki iletileri görmek için görünümü.

Birden çok konuşmaları ileti gönderme send deyimi başarısız, örneğin gönderme atomik bir deyimi, ise görüşme hatalı bir durumda olduğundan, ileti iletim sırada depolanan veya herhangi bir hedef hizmet sırasına koymak.

Service Broker depolama ve aynı send deyimi içinde birden çok konuşmaları üzerine gönderilen ileti aktarımını eniyileştirir.

Bir örneğin iletim sıralarındaki iletileri sıra göre aktarılır:

  • Onların ilişkili konuşma bitiş noktası öncelik düzeyi.

  • Öncelik düzeyi içinde iletişimindeki kendi gönderme sırası.

HONOR_BROKER_PRIORITY veritabanı seçeneği on olarak ayarlanmışsa, Konuşma öncelikleri içinde belirtilen öncelik düzeyleri iletim sırasındaki iletilerin yalnızca uygulanır. HONOR_BROKER_PRIORITY kapalı ise, veritabanı için iletim sıraya koymak tüm iletileri 5 varsayılan öncelik düzeyi atanır. Öncelik düzeyleri iletileri nereye koymak doğrudan aynı örneği hizmet sıraya göndermek için uygulanmaz Veritabanı Altyapısı.

send deyimi, her konuşma üzerinde ayrı ayrı kilitler konuşma başına sağlamak için bir mesaj gönderdiği sipariş teslim.

Gönder, kullanıcı tanımlı bir işlev geçerli değil.

İzinler

İleti göndermek için geçerli kullanıcının iletiyi gönderdiği her hizmet üzerinde sıraya Al izni olmalıdır.

Örnekler

Aşağıdaki örnek, bir iletişim kutusu başlatılır ve iletişim kutusunda xml iletisi gönderir. İleti göndermek için örnek xml nesnesine dönüştürür varbinary(max).

DECLARE @dialog_handle UNIQUEIDENTIFIER,
        @ExpenseReport XML ;

SET @ExpenseReport = < construct message as appropriate for the application > ;

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


SEND ON CONVERSATION @dialog_handle
    MESSAGE TYPE [//Adventure-Works.com/Expenses/SubmitExpense]
    (@ExpenseReport) ;

DECLARE @dialog_handle UNIQUEIDENTIFIER,
        @ExpenseReport XML ;

SET @ExpenseReport = < construct message as appropriate for the application > ;

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


SEND ON CONVERSATION @dialog_handle
    MESSAGE TYPE [//Adventure-Works.com/Expenses/SubmitExpense]
    (@ExpenseReport) ;

Aşağıdaki örnek, üç diyaloglar başlar ve her biri bir xml iletisi gönderir.

DECLARE @dialog_handle1 UNIQUEIDENTIFIER,
        @dialog_handle2 UNIQUEIDENTIFIER,
        @dialog_handle3 UNIQUEIDENTIFIER,
        @OrderMsg XML ;

SET @OrderMsg = < construct message as appropriate for the application > ;

BEGIN DIALOG @dialog_handle1
FROM SERVICE [//InitiatorDB/InitiatorService]
TO SERVICE '//TargetDB1/TargetService’
ON CONTRACT [//AllDBs/OrderProcessing] ;

BEGIN DIALOG @dialog_handle2
FROM SERVICE [//InitiatorDB/InitiatorService]
TO SERVICE '//TargetDB2/TargetService’
ON CONTRACT [//AllDBs/OrderProcessing] ;

BEGIN DIALOG @dialog_handle3
FROM SERVICE [//InitiatorDB/InitiatorService]
TO SERVICE '//TargetDB3/TargetService’
ON CONTRACT [//AllDBs/OrderProcessing] ;

SEND ON CONVERSATION (@dialog_handle1, @dialog_handle2, @dialog_handle3)
    MESSAGE TYPE [//AllDBs/OrderMsg]
    (@OrderMsg) ;

DECLARE @dialog_handle1 UNIQUEIDENTIFIER,
        @dialog_handle2 UNIQUEIDENTIFIER,
        @dialog_handle3 UNIQUEIDENTIFIER,
        @OrderMsg XML ;

SET @OrderMsg = < construct message as appropriate for the application > ;

BEGIN DIALOG @dialog_handle1
FROM SERVICE [//InitiatorDB/InitiatorService]
TO SERVICE '//TargetDB1/TargetService’
ON CONTRACT [//AllDBs/OrderProcessing] ;

BEGIN DIALOG @dialog_handle2
FROM SERVICE [//InitiatorDB/InitiatorService]
TO SERVICE '//TargetDB2/TargetService’
ON CONTRACT [//AllDBs/OrderProcessing] ;

BEGIN DIALOG @dialog_handle3
FROM SERVICE [//InitiatorDB/InitiatorService]
TO SERVICE '//TargetDB3/TargetService’
ON CONTRACT [//AllDBs/OrderProcessing] ;

SEND ON CONVERSATION (@dialog_handle1, @dialog_handle2, @dialog_handle3)
    MESSAGE TYPE [//AllDBs/OrderMsg]
    (@OrderMsg) ;

Ayrıca bkz.

Başvuru

BEGIN DIALOG konuşma (Transact-sql)

move konuşma (Transact-sql)

(Transact-sql) alma

sys.transmission_queue (Transact-sql)