2010-05-28 6 views
11

Sunucuda çalışan bir Service Broker'ı var, yeni bir sunucuya geçme sürecindeyiz, ancak Service Broker'ın yeni kutuya kurulmasını sağlayamıyorum. Service Broker, veri tabanı geri yüklemeden sonra çalışmıyor

bile mesaj tipi ve yeniden, eklemeden

SEÇ

AÇIK STATUS ALTER QUEUE ayarı *, DB üzerinde Broker etkinleştirme rota, hizmetler, sözleşme, sıraları düşürme ve bu gibi şeyler (bana) apaçık yaptın mı sys.service_queues GELEN

activation_enabled olarak göstermek benimkinin iki de dahil olmak üzere, bana kuyruklar listesini verir, vb receive_enabled

Tabii kuyruklar çalışmıyor demek. Onlara mesaj bıraktığımda hiçbir şey girmez ve hiçbir şey çıkmaz.

Herhangi bir fikrin var mı? Ben ... kaçırmıştım gerçekten apaçık bir şey var eminim karanlıkta

cevap

30

Sadece bir atış:

ALTER AUTHORIZATION ON DATABASE::[restored db name] TO [sa]; 

restore veritabanının Dbo orijinalinde db oluşturulan, Windows SID'sidir sunucusu. Bu, yeni sunucuda bir anlamı olmayan yerel bir SID (örn. SERVERNAME \ user) olabilir. Bu sorun genellikle etkinleştirilmiş yordamları etkiler ve , iletinin teslimini etkileyebilir, her iki sorun da SQL'in 'dbo'yu taklit edememesi nedeniyle gerçekleşir. Dbo'yu geçerli bir oturum açma SID'ye çevirmek (sa gibi) onu düzeltirdi.

Eğer bu düzeltmezse, mesajların nereye gittiğini takip etmelisiniz. Eğer sys.transmission_queue içinde kalırlarsa, transmission_status'u kontrol etmelisiniz. Hedef sıraya ulaşırlarsa ancak aktivasyon gerçekleşmezse, ERRORLOG'u kontrol edin. Kaybolurlarsa, fire-and-forget (SEND hemen END ile takip edilir) yaptığınız anlamına gelir ve bu nedenle nedenini belirten hata mesajını siliyorsunuz demektir. Bu makale Troubleshooting Dialogs, bakılacak daha fazla ipucu içeriyor.

Ve son olarak, ancak en az ssbdiagnose.exe kullanmayı deneyin.

+0

Remus, her zamanki gibi, 'karanlıkta vurduğunuzda' bullseye çarptı. Şimdi ateş edeceğim “ateş ve unut” u kullanıyordum. Bence bu son birkaç yılda bana Hizmet Broker'ı ile doğrudan yardım ettiğin üçüncü kez, sanırım bir çeşit internet Oscar'ı almalısın. =) – roryok

+0

Günümü kurtardın! – Manu

5

Remus'un yanıtına ek olarak, geri yüklenen DB'nin BrokerEnabled özelliğini de kontrol etmek isteyebilirsiniz. Bir DB'yi geri yüklediğinizde, geri yüklenen DB'nin BrokerEnabled özelliği False olarak ayarlanır. Bu nedenle sıraya hiçbir şey girmeyecek. Bu adrese:

  • sağ git SSMS restoredDB> "Özellikler"> "Seçenekler"> "Hizmet Aracısı" grubuna aşağı gelin tıklayın ve "Broker Etkin" özelliğinin değerini doğrulayın. Yanlış olarak ayarlanırsa, bunu True olarak değiştirin ve bu sorununuzu çözmelidir.