Aracılığıyla paylaş


END KONUşMA (Transact-SQL)

Varolan konuşmaya bir tarafı sona erer.

Topic link iconTransact-SQL sözdizimi kuralları

END CONVERSATION conversation_handle
   [   [ WITH ERROR = failure_code DESCRIPTION = 'failure_text' ]
     | [ WITH CLEANUP ]
    ]
[ ; ]

Bağımsız değişkenler

  • conversation_handle
    Konuşmayı sona erdirmek için konuşma tanıtıcısı belirtilir.

  • HATA ile = failure_code
    Hata kodudur.The failure_code is of type int.Hata kodu görüşme diğer tarafına gönderilen hata iletisinde bulunan bir kullanıcı tanımlı bir koddur.Hata kodu 0'dan büyük olmalıdır.

  • Açıklama = failure_text
    Hata iletisidir.The failure_text is of type nvarchar(3000).Hata metni konuşmaya diğer tarafına gönderilen hata iletisinde bulunan kullanıcı tanımlı metindir.

  • İLE TEMİZLEME
    Tüm iletileri ve bir tarafında normalde tamamlanamıyor bir görüşme için katalog görünümü girişleri kaldırır.The other side of the conversation is not notified of the cleanup.Microsoft SQL Server drops the conversation endpoint, all messages for the conversation in the transmission queue, and all messages for the conversation in the service queue.Yöneticiler, normalde tamamlanamıyor görüşmeleri kaldırmak için bu seçeneği kullanın.Uzak hizmet kalýcý, örneğin, yönetici ile TEMİZLEME görüşmeleri için bu hizmeti kaldırmak için kullanabilirsiniz.İle TEMİZLEME kod kullanan birService Brokeruygulama.Önce bir ileti alma alıcı uç onaylar ile END konuşma TEMİZLEME çalıştırırsanız, son nokta gönderen iletiyi yeniden gönderin.Bu iletişim kutusunu yeniden zararlı.

Remarks

Konuşma kilit bitiş konuşma grubu, sağlananconversation_handleait.Görüşme sona erer,Service Brokerhizmet sıranın. konuşma tüm iletileri kaldırır

Görüşme bittikten sonra bir uygulama artık ileti gönderip, konuşma için.Her iki katılımcı konuşmada END tamamlamak için görüşme görüşme için çağırması gerekir.IfService Brokeralınmadı son iletişim iletisine veya başka katılımcı görüşmesinde, gelen bir hata iletisiService Brokergörüşme sona iletişimindeki diğer katılımcıya bildirir.Bu durum, görüşme için konuşma tanıtıcısı artık geçerli son nokta için görüşme uzak hizmet barındıran örneği kadar etkin kalır ileti edene değil de.

IfService Brokerhenüz işledi, görüşme için bir son iletişim veya hata iletisiService Brokergörüşme sona görüşmenin uzak tarafı bildirir.İletiler,Service Brokerbelirtilen seçeneklere bağlı uzak hizmetine gönderir:

  • If the conversation ends without errors, and the conversation to the remote service is still active, Service Broker sends a message of type https://schemas.microsoft.com/SQL/ServiceBroker/EndDialog to the remote service.Service Broker adds this message to the transmission queue in conversation order.Service Broker sends all messages for this conversation that are currently in the transmission queue before sending this message.

  • If the conversation ends with an error and the conversation to the remote service is still active, Service Broker sends a message of type https://schemas.microsoft.com/SQL/ServiceBroker/Error to the remote service.Service Broker drops any other messages for this conversation currently in the transmission queue.

  • İLE TEMİZLEME yan tümce normalde tamamlanamıyor görüşmeleri kaldırmak bir veritabanı yöneticisi sağlar.Bu seçenek, tüm iletileri ve görüşme için katalog görünümü girişleri kaldırır.Bu durumda, uzak tarafı görüşmenin görüşme sona erdi ve bir uygulama tarafından gönderilen ancak henüz ağ üzerinden aktarılan iletileri alabilirsiniz hiçbir bilgi alır, dikkat edin.Bu seçenek, görüşme normalde tamamlanamıyor sürece kaçının.

Konuşma bittikten sonra birTransact-SQLSEND konuşma tanıtıcıyı belirtir deyim neden olan birTransact-SQLhatası.Konuşma iletilerini gelen diğer tarafında, görüşmeService Brokeratar bu iletileri.

Uzak hizmet iletileri görüşme için hala sürüyor durumunda sırada bir görüşme sona ererse, uzak hizmet gönderilmemiş iletiler bırakır.Bu hata değerlendirilir ve uzak hizmet iletileri bırakıldı bildirim alır.

Hata kodları hata ile yan tümcesinde belirtilen pozitif bir sayı olmalıdır.Negatif sayılar için ayrılmıştırService Brokerhata iletileri.Daha fazla bilgiService Brokerhata iletileri, bkz:Sistem iletilerini Aracısı.

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

İzinler

Etkin bir konuşmayı sona erdirmek için geçerli kullanıcı, sahibi ve görüşme, sysadmin sabit sunucu rolünün bir üyesi, db_owner sabit veritabanı rolü bir üyesi olmalıdır.

Üye sysadmin sabit sunucu rolü veya db_owner sabit veritabanı rolü bir üyesi ile TEMİZLEME zaten tamamlandı bir konuşma için meta veriler kaldırmak için kullanabilirsiniz.

Örnekler

C.Bir bitiş

Aşağıdaki örnek iletişim kutusu tarafından belirtilen bitiş@dialog_handle.

END CONVERSATION @dialog_handle ;

B.Görüşme hatalı sonlandırma

Aşağıdaki örnek iletişim kutusu tarafından belirtilen bitiş@dialog_handlebir hata durumunda işleme deyim raporlar bir hata.Bu hata işleme için simplistic bir yaklaşım ve bazı uygulamalar için uygun olmayabilir dikkat edin.

DECLARE @dialog_handle UNIQUEIDENTIFIER,
        @ErrorSave INT,
        @ErrorDesc NVARCHAR(100) ;
BEGIN TRANSACTION ;

<receive and process message>

SET @ErrorSave = @@ERROR ;

IF (@ErrorSave <> 0)
  BEGIN
      ROLLBACK TRANSACTION ;
      SET @ErrorDesc = N'An error has occurred.' ;
      END CONVERSATION @dialog_handle 
      WITH ERROR = @ErrorSave DESCRIPTION = @ErrorDesc ;
  END
ELSE

COMMIT TRANSACTION ;

C.Bir Konuşmayı, normalde tamamlanamıyor temizleme

The following example ends the dialog specified by @dialog\_handle.SQL Server immediately removes all messages from the service queue and the transmission queue, without notifying the remote service.Bir iletişim kutusu temizleme ile biten uzaktan hizmet bildirimde bulunmaz olduğundan, yalnızca bu burada uzaktan hizmet değil almak kullanılabilir durumda kullanmanız gereken birEndDialog or Error message.

END CONVERSATION @dialog_handle WITH CLEANUP ;