徵狀
請試想下列案例:
-
您已部署 SQL Server AlwaysOn 可用性群組和可用性群組偵聽程式。
-
AlwaysOn 健康情況偵測會偵測到主持主要複本的 SQL Server 出現健康問題,並開始將可用性群組從主要角色轉換為解析角色。 其中的部分涉及將可用性群組攔截器資源離線。
-
嘗試停止偵聽程式資源的操作可能無法完成,且 SQL Server 不會產生的轉儲診斷報告在 SQL Server 錯誤記錄中出現「未產生排程」的故障。
-
如果您不以無人參與的方式嘗試停止可用性群組攔截器,該作業可能會無限期地損毀。
在這種情況下,可用性群組中的可用性資料庫會保持在復原模式,而且無法連線。 您會收到下列錯誤:
<日期> <時間> <伺服器名稱> * * * 無法取得 spid 0 的執行緒內容<> <時間> <伺服器名稱> <1 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * [ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *> <2 日期> <時間> <伺服器名稱> <7 *> <8 日期> <時間> <伺服器名稱> <3 * 開始堆疊轉儲:> <4 日期> <時間> <伺服器名稱> <9 *> <0 日期> <> <3> <4> <> <> <9> <0 伺服器名稱> <*> <日期> <5> <6伺服器名稱> <*> <日期>時間<伺服器名稱> <* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1068 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *>> <> <<
原因
發生這個問題的原因是,執行緒會關閉攔截器資源凍結,但不會產生問題。 這個沒有產生的執行緒會封鎖同一個處理器上的其他執行緒,阻塞其他執行緒嘗試復原可用性資料庫。
解決方案
此問題最初是在 SQL Server 的後續累積更新中修正。
SQL Server 2012 SP1 的累積更新9 /en-us/help/2931078
每個新的 SQL Server 累計更新都包含所有的修正程式,以及前一個累積更新中所包含的所有安全性修正程式。 查看 SQL Server 的最新累計更新:
狀態
Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。