徵狀
請試想下列案例:
-
您擁有在 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 在您復原資料庫 ' %1!」中的記錄作業期間,記錄的記錄識別碼% 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 service pack 2012
狀態
Microsoft 已確認<適用於>一節所列的 Microsoft 產品確實有上述問題。