Share via


SEND (Transact-SQL)

Varolan konuşmaya kullanarak, bir ileti gönderir.

Topic link iconTransact-SQL sözdizimi kuralları

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

Bağımsız değişkenler

  • conversation_handle Konuşma ON
    Iletiye ait olduğu konuşmayı belirtir.The conversation_handle must contain a valid conversation identifier.

  • ileti türü message_type_name
    Belirtir ileti türü gönderilen ileti.Bu ileti türü de dahil edilmesi hizmet bu konuşmaya tarafından kullanılan bir sözleşme.anlaşma, bu konuşmaya taraftan gönderilmek üzere ileti türü izin vermesi gerekir.Örneğin, hedef görüşmenin yalnızca anlaşma belirtilen HEDEF BY SENT veya ANY BY SENT iletileri gönderebilir.Bu yan tümce belirtilmezse VARSAYıLAN ileti türünü iletisidir.

  • message_body_expression
    Ileti gövdesi olarak gösteren bir ifade sağlar.The message_body_expression is optional.Ancak, message_body_expression varsa ifade dönüştürülebilir bir tür olmalıdır varbinary(max). Ifade NULL olamaz.Bu yan tümce girilmediği takdirde, ileti gövdesi boş olur.

Remarks

Important noteImportant Note:

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

Bir hizmet bir ucundaki iletiden SEND deyim ileten bir Service Broker Görüşmenin diğer ucundaki hizmet konuşmaya. Al deyim sonra hedef ile ilişkili bir sıraya gönderilmiş iletileri almak için kullanılan hizmet.

ON KONUşMA yan tümcesine sağlanan konuşma tanıtıcısı iki kaynaklardan birinden geliyor:

  • Başka bir hizmet alınan bir iletiye yanıt olarak olduğunu belirten bir ileti gönderirken, BEGIN ILETIŞIM kutusundan döndürdü konuşma tanıtıcısı kullanmak deyim, görüşmeyi oluşturuldu.

  • Bir iletiye yanıt olarak daha önce başka bir hizmetinden alınan olduğunu belirten bir ileti gönderirken, Teslim Al'tarafından döndürülen konuşma tanıtıcısı kullanmak deyim, özgün iletinin döndürdü.

Çoğu durumda, GÖNDERME içeren kod deyim DIALOG BEGIN veya Al deyim konuşma tanıtıcısı sağlama s içeren koddan farklıdır.Bu gibi durumlarda, konuşma tanıtıcısı SEND içeren, koda geçirilen durum bilgisini veri öğelerinin olmalıdır.

Bir hizmet başka örnek tarafından gönderilen iletileri SQL Server Database Engine hizmet sıraya uzak örneğindeki iletilebilecek kadar geçerli veritabanındaki bir iletim sırasında saklanır. Gönderilen iletileri bir hizmet aynı örneğini de Database Engine doğrudan ile ilişkili kuyruğa yerleştirme hizmet. Bir koşula yerel bir ileti doğrudan hedef hizmet sıraya koyma engelliyorsa, koşul giderilinceye kadar iletim sırada depolanabilir.Bu olduğunda, bazı hatalar veya hedef tür örnekler hizmet etkin değil bir sıra.Kullanabileceğiniz sys.transmission_queue sistem iletilerini bir iletim sırasında görüntüleyin.

örnek için Aktarım sıralarındaki iletileri, sıra göre aktarılır:

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

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

HONOR_BROKER_PRIORITY veritabanı seçenek konuşma öncelikleri belirtilen öncelik düzeyi yalnızca Aktarım sırasındaki iletilerin uygulanır küme açık.HONOR_BROKER_PRIORITY ise küme OFF, o veritabanı için iletim sıraya koyma tüm iletiler varsayılan öncelik düzeyini 5 atanır.Öncelik düzeyleri bir SEND, iletileri doğrudan bir hizmet sırada aynı örneğini içine yerleştirilir uygulanmıyor Database Engine.

SEND deyim konuşma tanıtıcısı ve tanıtıcı ait olduğu grup değil kilitler.

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

İzinler

Ileti göndermek için , geçerli kullanıcının SEND ise iletişim hizmetine izniniz olmalıdır.uzak hizmet bağlaması için hizmet varsa, kullanıcı, içinde uzak hizmet bağlaması Al, gelen iletişim hizmeti için sıraya izinleriniz olmalıdır belirtti.

Örnekler

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