我有一個使用臭名昭着的火和忘記模式(不判斷我,我沒有創建它)在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
我試圖找出如何解決這個問題,但無法弄清楚短期增加的存儲過程的「發送」隊列,但我不明白爲什麼這是必要。
基本設置是:
- 插入到 「掃描」 表
觸發所謂的 「送」 的服務,像這樣:
BEGIN DIALOG CONVERSATION @SBDialog FROM SERVICE ScanSendService TO SERVICE 'ScanReceiveService', 'CURRENT DATABASE' ON CONTRACT ScanContract WITH ENCRYPTION = OFF
「接收」 服務電話一個存儲過程,然後做不相關的東西。下面詳細隊列:
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錯誤消失了,但隊列仍然中斷(接收隊列你仍然空着)。