徵兆
請試想下列案例:
-
您使用 Microsoft SQL Server 2016 Service Pack 2 (SP2) 累積更新 2 (CU2) 或更新版本。
-
您執行的實例會主控許多資料庫, (通常超過 200 個) ,而實例是Always On可用性群組 (AG) (的一部分,通常具有次要伺服器) 的角色。 附註: 所有使用者資料庫都不需要屬於 AG。
-
您 (VSS) 應用程式執行大量陰影複製服務,以要求SQL Server實例之所有或部分資料庫的備份。
在此案例中,SQL 寫入器服務可能會鎖死,並且無限期地鎖定主 (sys.sysdbreg 中具有 object_id 28) 的內部系統資料表。 此外,這些鎖定也會使系統動態管理檢視無法讀取, (DMV) 如 sys.dm_hadr_database_replica_states,而且可能會導致實例中的主要次要封鎖。 此外,您也注意到區塊鏈分析會傳回來自 VSS Writer SQL Server做為標題封鎖程式的下列語句:
「從 master.sys.databases 選取名稱、recovery_model_desc、state_desc、CONVERT (整數、is_in_standby) 、ISNull (source_database_id,0) 」
然後SQL Server會有ASYNC_NETWORK_IO的等候狀態。
附註: 由於已實作 ASYNC_NETWORK_IO 等待, 因此 wait_time (2,000 ms) 時,絕對不會超過 2 秒。 不過,等待類型會無限期保留不變,這種情況永遠不會自行解除封鎖。 您必須先將SQL 寫入器服務解除封鎖。
在此標頭封鎖的 SPID 中,通常會有 DBSTARTUP SPID (alwayson Secondary DB redo) 。
狀態
Microsoft 已確認<適用於>一節所列的 Microsoft 產品確實有上述問題。
解決方案
此問題已在下列SQL Server累積更新中修正:
關於SQL Server的累積更新:
每個SQL Server的新累積更新都包含所有 Hotfix 以及先前累積更新隨附的所有安全性修正。 查看SQL Server的最新累積更新:
參考
瞭解 Microsoft 用來描述軟體更新的術語。