徵狀
請試想下列案例:
-
您可以在 Microsoft SQL Server 2014 中啟用 AlwaysOn 可用性群組功能。
-
AlwaysOn 資料庫具有公共語言執行時間(CLR)使用者定義的資料類型(UDT)。 此外,一個以上的資料庫中也會有相同的 CLR UDT。
-
您執行的查詢涉及多個具有 CLR UDT 的資料庫。
在這種情況下,次要複本中發生存取違例錯誤,且 SQL Server 實例在 SQL Server 錯誤記錄中使用下列訊息當機:
2015-02-17 13:07: 36.85 spid27s 在 VLR 處理期間在 commit 期間處理期間,因例外狀況2905而關閉資料庫。 2015-02-17 (3449,嚴重性:21,State: spid27s-02-17 13:07: 1.2015 36.85 SQL Server 必須關閉,才能復原資料庫(資料庫 ID 2)。 資料庫是無法關閉或系統資料庫的使用者資料庫。 重新開機 SQL Server。 如果資料庫無法在其他啟動之後復原,請修復或還原資料庫。
此外,您會在次要複本資料庫中收到下列錯誤訊息,直到您重新開機 SQL Server 之後,才會發生此錯誤:
Msg 3961、Level 16、State 1、Line 3Snapshot 隔離事務在資料庫 ' <DatabaseName>」中失敗,因為該語句所存取的物件已由另一個併發事務中的 DDL 語句所修改,自此事務開始之後。 因為中繼資料沒有版本控制,所以是不允許的。 如果使用快照隔離混合,則對中繼資料的併發更新可能會造成不一致的情況。
解決方案
累積更新資訊
此問題最初是在 SQL Server 的後續累積更新中修正。
每個新的 SQL Server 累計更新都包含所有的修正程式,以及前一個累積更新中所包含的所有安全性修正程式。 我們建議您下載並安裝最新的 SQL Server 累積更新:
更新資訊若要解決此問題,請套用更新 KB 3043788:適用于 SQL Server 2014 的隨選熱修復程式更新套件。
狀態
Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。