Aracılığıyla paylaş


GÖNDERME (Transact-SQL)

Varolan konuşmaya kullanarak bir ileti gönderir.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

SEND
   ON CONVERSATION conversation_handle
   [ MESSAGE TYPE message_type_name ]
   [ ( message_body_expression ) ]
[ ; ]

Bağımsız değişkenler

  • KONUŞMA HAKKINDAconversation_handle
    İletiye ait olduğu konuşma belirtir.conversation_handle İçermesi gerekir bir geçerli konuşma tanımlayıcısı.

  • İLETİ TÜRÜmessage_type_name
    Gönderilen iletiyi ileti türü belirtir.Bu görüşmeye göre kullanılan hizmetanlaşma bu ileti türü dahil edilmesi gerekir. anlaşma , bu konuşma taraftan gönderilmek üzere ileti türü izin vermesi gerekir.Örneğin, konuşma hedef yalnızca hedef tarafından GÖNDERİLEN veya any tarafından GÖNDERİLEN anlaşma belirtilen iletileri gönderebilir.Bu yan tümce atlanırsa, ileti türü varsayılan iletisidir.

  • message_body_expression
    İleti gövdesini temsil eden bir ifade sağlar.message_body_expression İsteğe bağlıdır.Ancak, message_body_expression var olduğunu ifade dönüştürülebilir bir tür olmalıdır varbinary(max).ifade null olamaz.Bu yan tümce atlanırsa, ileti gövdesi boş olur.

Açıklamalar

Önemli notÖnemli

send deyim ilk deyim bir toplu iş veya saklı yordam, değilse, önceki deyim bir noktalı virgül sonlandırılması gerekir (;).

send deyim ' % s'hizmeti hizmet bir ucunu, iletiden aktaran bir Service Broker Görüşme görüşme diğer ucundaki hizmet . Al deyim sonra hedef hizmetilişkilendirilmiş sırasından Gönderilmiş iletiyi almak için kullanılır.

on görüşme yan tümce sağlanan konuşma tanıtıcısı iki kaynaklardan birinden geliyor:

  • Başka bir hizmettarafından alınan bir iletiye yanıt olarak değil bir ileti gönderirken, görüşme oluşturulan iletişim BAŞLAMADAN deyim döndürülen konuşma tanıtıcısı kullanın.

  • Bir iletiye yanıt olarak önceden başka bir hizmettarafından alınan ileti gönderirken, özgün iletinin döndürülen Al deyim tarafından döndürülen konuşma tanıtıcısı kullanın.

Çoğu durumda, send deyim içeren konuşma tanıtıcısısağlayan iletişim başlatmak ya da alma ifadeleri içerir kodundan ayrı kodudur.Bu gibi durumlarda, konuşma tanıtıcısı send deyimiçeren kod geçirilen durum bilgisi veri öğeleri biri olmalıdır.

Bir hizmet başka bir örnek gönderilen iletileri SQL Server Veritabanı Altyapısı bunlar uzaktan örnek hizmet sıraya iletilebilecek kadar bir iletim sırasında geçerli veritabanında depolanır.Bir hizmet aynı örnek gönderilen iletileri Veritabanı Altyapısı doğrudan bu hizmetile ilişkili kuyruğa yerleştirme.Bir koşulu yerel ileti doğrudan hedef hizmet sırasına konması engelliyorsa, koşul giderilinceye kadar iletim sırada depolanabilir.Bazı tür hataları veya etkin olan hedef hizmet sırası oluştuğunda bu örnekleri içerir.Kullanabileceğiniz sys.transmission_queue bir iletim sırasında iletileri görüntülemek için sistem görünümü.

Bir örnek için iletim sıralarındaki iletileri sıra göre aktarılır:

  • konuşma uç noktası, ilişkili öncelik düzey .

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

HONOR_BROKER_PRIORITY veritabanı seçeneğini küme için on ise konuşma öncelikleri'nde belirtilen öncelik düzeyleri iletim sırasındaki iletilerin yalnızca uygulanır.HONOR_BROKER_PRIORITY off için küme olması durumunda, o veritabanı için iletim sıraya koymak tüm iletileri 5 varsayılan öncelik düzey atanır.Öncelik düzeyleri burada iletileri getirilme doğrudan bir hizmet sıra aynı örnek bir gönderme uygulanmıyor Veritabanı Altyapısı.

send deyim konuşma tanıtıcısı ve değil tutamacı ait olduğu grubu kilitler.

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

İzinler

İleti göndermek için geçerli kullanıcı Gönder iletişim den hizmet üzerinde izniniz olmalıdır.Uzaktan hizmet bağlama hizmet bulunuyorsa, uzaktan hizmet bağlama iletişim den hizmet için sıraya Al izinleri olmalıdır, belirtilen kullanıcı.

Örnekler

Aşağıdaki örnek, bir iletişim kutusu başlatılır ve iletişim kutusunda xml ileti 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) ;