症狀
請考慮以下案例:
- 您的資料庫在 Microsoft SQL Server 2012 或 SQL Server 2014 中啟用了快照隔離或讀取認可快照隔離等級。
- 資料庫包含具有多欄叢集索引的非空資料表。 叢集索引的前置索引鍵設為 NOT Null。
- 您開始交易,然後在資料表中新增資料行。 此資料行的值已更新。
- 您可以變更叢集索引的前置索引鍵以允許 NULL 值。
- 您可以插入叢集索引的前置索引鍵具有 NULL 值的資料列,然後中止交易。
在此案例中,復原會使資料庫變成可疑狀態,而且只能使用 DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS 命令「修復」。 此外,您可能會收到下列錯誤訊息:
注意
Msg 3316, Level 21, State 2, Line 135
復原資料庫 '%.*ls' 中記錄的作業期間,記錄識別碼 %S_LSN 發生錯誤。 找不到該列。 從完整備份還原資料庫,或修復資料庫。
解決方式
SQL Server 2014 的 Service Pack 資訊
要解決此問題,請取得 SQL Server 2014 的 Service Pack 1。
如需 SQL Server 2014 Service Pack 1 (SP1) 的詳細資訊,請參閱 SQL Server 2014 Service Pack 1 中修正的錯誤。
SQL Server 2012 的 Service Pack 資訊
若要解決此問題,請取得 Microsoft SQL Server 2012 的最新 Service Pack。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2755533 如何取得 SQL Server 2012 的最新版 Service Pack
狀態
Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。