症状
请考虑以下情况:
-
你的数据库具有在 Microsoft SQL Server 2012 或 SQL Server 2014 中启用的快照隔离或已提交快照隔离级别。
-
数据库包含包含多列聚集索引的非空表。 聚集索引的前导键设置为 NOT NULL。
-
开始事务并将列添加到表中。 此列的值已更新。
-
更改聚集索引的前导键以允许 NULL 值。
-
为聚集索引的前导键插入具有 NULL 值的行,然后中止事务。
在这种情况下,回退会导致数据库不会出现可疑问题,并且仅通过 "修复" 命令 REPAIR_ALLOW_DATA_LOSS 的 DBCC CHECKDB 。 此外,你还可能会收到以下错误消息:
消息3316、级别21、状态2、行135在对数据库 ' ' %1! ' 执行日志记录操作时出现错误,日志记录 ID% 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 中修复的 bug。
SQL Server 2012 的 Service pack 信息
若要解决此问题,请获取最新的 Microsoft SQL Server 2012 服务包。有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2755533 如何获取最新的 SQL Server 2012 服务包
状态
Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。