0

我有一個使用臭名昭着的火和忘記模式(不判斷我,我沒有創建它)在SQL Server 2005上工作正常的服務。我最近升級到2012年,現在ssbdiagnose是抱怨不一致激活設置:不一致的激活設置

The activation settings for queue dbo.ScanSendQueue are inconsistent: Activation is configured but disabled 
The activation settings for queue dbo.ScanSendQueue are inconsistent: Activation is configured with 0 max_queue_readers 
The activation settings for queue dbo.ScanSendQueue are inconsistent: Activation is configured but no procedure is specified 

我試圖找出如何解決這個問題,但無法弄清楚短期增加的存儲過程的「發送」隊列,但我不明白爲什麼這是必要。

基本設置是:

  1. 插入到 「掃描」 表
  2. 觸發所謂的 「送」 的服務,像這樣:

    BEGIN DIALOG CONVERSATION @SBDialog FROM SERVICE ScanSendService TO SERVICE 'ScanReceiveService', 'CURRENT DATABASE' ON CONTRACT ScanContract WITH ENCRYPTION = OFF

  3. 「接收」 服務電話一個存儲過程,然後做不相關的東西。下面詳細隊列:

    ALTER QUEUE [dbo].[ScanReceiveQueue] WITH STATUS = ON , RETENTION = OFF , ACTIVATION ( STATUS = ON , PROCEDURE_NAME = [dbo].[usp_Process_ScanReceiveQueue] , MAX_QUEUE_READERS = 1 , EXECUTE AS OWNER ), POISON_MESSAGE_HANDLING (STATUS = OFF)

消息使其進入「發送」隊列就好了,但不是「接收」隊列。爲什麼ssbdiagnose對此抱怨,我該如何解決?

編輯:更多的信息,因爲似乎沒有人有任何想法:(

我看了看Microsoft.SqlServer.ServiceBroker.Diagnostics.dll,似乎所有這些檢查正在對每個隊列運行,無論是否「激活配置」或者沒有,但我甚至不知道如何如果有人有興趣不配置激活....

來源:https://gist.github.com/Mansfield7/5766457#file-gistfile1-cs-L12

編輯2:我打開激活該隊列,並指定一個存儲過程, ssbdiagnose錯誤消失了,但隊列仍然中斷(接收隊列你仍然空着)。

回答

0

在爲該隊列正確添加激活之後,ssbdiagnose錯誤消失了,但服務仍然無法正常工作。

我連接了SQL Server事件探查器,發現數據庫並未處於可信模式,因此我運行了以下命令並開始工作。

ALTER DATABASE [DBNAME] SET TRUSTWORTHY ON;

我還是會好奇地想知道更多關於關於激活ssbdiagnose警告,但現在我的問題就解決了。

相關問題