症状
假设在 Microsoft SQL Server 2012 中有一个包含 FILESTREAM 列和 LOB 列的表。 当你删除 LOB 列并尝试重新生成现有聚集索引或创建新的聚集索引时,将收到以下系统声明错误消息:
<> <Time> Spid<ID> 错误:17066,严重度:16,状态: 1 。 <> <> SQL Server 断言:文件:> <0 FilePath> \longrec.inl <<,Line = 1318 失败断言 = "outBufLen> = offsetof (InRowContent,>) + inBufLen"。 Time 此错误可能与计时有关。 如果在重新运行该语句后,该错误仍然存在,请使用 DBCC CHECKDB 检查数据库的结构完整性,或重启服务器以确保内存中的数据结构未损坏。 <日期> <时间> Spid<ID> 错误:3624,严重性:20,状态: 1 。 <日期> < 有关详细信息,请查看 SQL Server 错误日志。 通常,断言失败由软件错误或数据损坏导致。 若要检查数据库是否损坏,请考虑运行 DBCC CHECKDB。 如果你同意在安装期间将转储发送到 Microsoft,则会向 Microsoft 发送一个小转储。 从 Microsoft 的最新服务包或从技术支持部门获取的 QFE 中可能提供更新。
解决方案
在 SQL Server 的以下累积更新中,此问题首先已修复。
SQL Server 2012 SP2 的累积更新6 /en-us/help/3052468
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。