2014-01-17 32 views
4

我們有一個C#web應用程序正在使用SQL依賴性來使緩存的查詢數據過期。雖然一切正常,但我們發現在我們的生產環境中會產生很多錯誤。在SQL Server中導致錯誤的SQL依賴項

的第一個錯誤消息是這樣的:

Service Broker needs to access the master key in the database 'SubscriberManager'. Error code:32. The master key has to exist and the service master key encryption is required.

它在這兩個服務器的事件日誌和SQL服務器日誌文件中顯示出來。我相信消息的實際內容是紅鯡魚的東西,因爲我創建了一個數據庫主密鑰。

我也曾嘗試

  • 再造兩個服務主密鑰和數據庫主密鑰。
  • 確保數據庫所有者是sa。
  • 確信的用戶帳戶具有權限創建服務,隊列,程序和訂閱 查詢通知
  • 確信經紀人啓用

我看到其他人有類似的錯誤,同時研究這個問題,但錯誤代碼幾乎總是似乎是25或26而不是32.我一直無法找到任何告訴我這些錯誤代碼是什麼意思的東西,所以我不確定其意義。

同時出現這種情況,我們有時也從.NET說得到一個錯誤如下:

System.InvalidOperationException: When using SqlDependency without providing an options value, SqlDependency.Start() must be called for each server that is being executed against

的應用雖然叫SqlDependency.Start在Application_Start 事件。

儘管這些錯誤很奇怪,但它們不會在每次遇到特定頁面時發生,甚至不會在每次創建或觸發通知時發生。我曾嘗試附加SQL Profiler並監視代理事件,並看到通知創建觸發沒有任何問題。

最後我看到了很多的錯誤是這樣的:

The query notification dialog on conversation handle '{2FA2445B-1667-E311-943C-02C798B618C6}.' closed due to the following error: ' -8490 Cannot find the remote service 'SqlQueryNotificationService-7303d251-1eb2-4f3a-9e08-d5d17c28b6cf' because it does not exist.'.

據我所知,這些一定數目是正常的,由於該SqlDependency.Stop不乾淨的一切行動在數據庫的方式,我們在我們的一臺生產服務器上看到了數千個這樣的產品。

令人沮喪的是,現在我們幾年來一直在使用SQL通知而沒有問題,所以在我們的應用程序或服務器設置中必須發生變化才能導致此問題,但此時我不知道該怎麼辦。

的應用.NET 4.0的MVC和WCF運行在Windows 2012服務器調用SQL服務器2012也可以在Windows 2012上運行

回答

0

據微軟稱,如果SQL Server是短期資源尤其是內存它可能會導致錯誤的論文生成。

+0

你有原創文章嗎? – Anish