Share via


move konuşma (Transact-sql)

Varolan bir konuşma bir tarafı sonlandırır.

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

Sözdizimi

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 konuşma tanıtıcı olduğunu.

  • HATA =failure_code
    Hata kodudur. failure_codeTürü int. Görüşmenin diğer tarafa gönderilen hata iletisinde bulunan kullanıcı tanımlı bir kod hata kodudur. Hata kodu 0'dan büyük olmalıdır.

  • Açıklama =failure_text
    Hata iletisidir. failure_textTürü nvarchar(3000). Başarısızlık görüşmenin diğer tarafa gönderilen hata iletisinde bulunan kullanıcı tanımlı metindir.

  • TEMİZLEME İLE
    Tüm iletileri ve Katalog girişlerini görüntülemek için normalde tamamlanamıyor konuşma tarafına kaldırır. Konuşma diğer tarafında temizlenmesi uyarılmaz. Microsoft SQL Serverkonuşma bitiş noktası, tüm iletiler için iletim sırasındaki konuşma ve görüşme için tüm iletileri hizmet sıraya düşüyor. Yöneticiler, hangi normal tamamlanamıyor konuşmaları kaldırmak için bu seçeneği kullanabilirsiniz. Uzaktan hizmeti kalıcı olarak kaldırılmış, örneğin, bir yönetici ile Temizleme konuşmaları bu hizmeti kaldırmak için kullanabilirsiniz. İLE Temizleme kodunda kullanmayın bir Service Brokeruygulaması. Önce bir ileti alma alıcı uç eder end konuşma ile Temizleme çalıştırırsanız, gönderen bitiş noktası yeniden mesajı göndereceğiz. Bu potansiyel olarak iletişim kutusunu yeniden.

Açıklamalar

Konuşma kilitleri bitiş konuşma grubu, sağlanan conversation_handleait. Konuşma sona erdiğinde, Service Brokertüm iletiler için konuşma hizmeti sıradan kaldırır.

Görüşme bittikten sonra bir uygulama artık ileti gönderip bu görüşme için. Hem katılımcıların konuşma sonunda tamamlamak için görüşme görüşme çağırmalısınız. Eğer Service Brokerbir son iletişim veya iletişimindeki diğer katılımcıdan bir hata iletisini almadı Service BrokerKonuşma sona erdi iletişimindeki diğer katılımcıyı bilgilendirir. Konuşma konuşma tanıtıcı artık geçerli olsa da, bu durumda son nokta için konuşma örneği ana mesajı uzak hizmet edene kadar etkin kalır.

Eğer Service Brokerzaten son iletişim veya hata iletisi için konuşma, işlediği Service BrokerKonuşma sona erdi konuşma tarafını bildirir. İletiler, Service Brokergöndermeleri için uzak hizmet belirtilen seçeneklere bağlıdır:

  • Konuşma olmadan hatalar ve konuşmayı sona ererse uzak hizmet hala etkin, Service Brokertürde bir ileti gönderir https://schemas.microsoft.com/SQL/ServiceBroker/EndDialog uzak hizmet. Service Brokerkonuşma sırası iletim sırada bu iletiye ekler. Service BrokerBu konuşma bu iletiyi göndermeden önce iletim sırada açık olan tüm iletileri gönderir.

  • Eğer bir hata ile konuşma bitiş ve uzak hizmet konuşmayı hala etkin, Service Brokertürde bir ileti gönderir https://schemas.microsoft.com/SQL/ServiceBroker/Error uzak hizmet. Service BrokerBu konuşma için diğer iletileri şu anda iletim sırada bırakır.

  • Temizleme ile yan tümcesi veritabanı yöneticisi normalde tamamlanamıyor konuşmaları kaldırmak 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 konuşma tarafını görüşme sona erdi ve bir uygulama tarafından gönderilen, ancak henüz ağ üzerinden iletilen iletileri alabilirsiniz değil hiçbir gösterge aldığı, dikkat edin. Konuşma normal tamamlanamıyor sürece bu seçenek kaçının.

Görüşme bittikten sonra bir Transact-SQLkonuşma tutamacını belirtir deyimi neden göndermek a Transact-SQLhata. İletileri bu konuşma için konuşma, diğer taraftan gelirseniz Service BrokerBu iletileri atar.

Uzak hizmet hala gönderilmedi iletileri görüşme sırasında bir konuşma sona ererse, gönderilmemiş iletileri uzaktan hizmeti bırakır. Bu hata kabul edilmez ve hiçbir bildirim iletileri bırakıldı uzak hizmet alır.

Hata kodları hata yan tümcesinde belirtilen pozitif sayı olması gerekir. Negatif sayılar için rezerve Service Brokerhata mesajları.

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

İzinler

Etkin bir oturum sona erdirmek için geçerli kullanıcı konuşma, üye sahibi olmalıdır sysadminsabit sunucu rolü veya bir üyesi db_ownerveritabanı rolü.

Üye sysadminsabit sunucu rolü veya bir üyesi db_ownersabit veritabanı rolü ile Temizleme zaten tamamlandı konuşma için meta verileri kaldırmak için kullanabilirsiniz.

Örnekler

A.Konuşma bitiş

Aşağıdaki örnek belirtilen iletişim biter @dialog\_handle.

END CONVERSATION @dialog_handle ;

END CONVERSATION @dialog_handle ;

B.Hata ile konuşma bitiş

Aşağıdaki örnek belirtilen iletişim biter @dialog\_handlehata işleme deyim bir hata bildirirse. Fark bu hata işleme için basit bir yaklaşım olduğunu ve bazı uygulamalar için uygun olmayabilir.

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 ;

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.Normalde tamamlanamıyor bir konuşma kadar temizlik

Aşağıdaki örnek belirtilen iletişim biter @dialog\_handle. SQL Serverhemen tüm iletilerin hizmet sıra iletim sıra uzak hizmet bildirmeden kaldırır. İletişim kutusu ile Temizleme sonlandırmadan uzak hizmet bilgilendirmez beri bu nerede uzaktan hizmeti kullanılamıyor almaya durumlarda kullanmalısınız bir EndDialog veya hata mesaj.

END CONVERSATION @dialog_handle WITH CLEANUP ;

END CONVERSATION @dialog_handle WITH CLEANUP ;

Ayrıca bkz.

Başvuru

Konuşma süreölçer (Transact-sql) başlar

BEGIN DIALOG konuşma (Transact-sql)

sys.conversation_endpoints (Transact-sql)