KB4469722 - 修复:在 SQL Server 中更新 FILESTREAM 逻辑删除系统表时的内部错误消息

应用对象
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

症状

假设在 Microsoft SQL Server 实例中有一个启用了 FILESTREAM 的数据库。 启动事务并使用 SqlFileStream .NET API 打开文件流文件时,由于外部因素,任务可能会失败并引发异常。

如果在同一事务和提交中使用 SqlFileStream 再次打开文件,可能会收到类似于以下内容的内部错误消息:

注意

date timespids, Unknown, Error: 5571<c/> Severity: 23<c/> state: 3.
日期时间spids、未知、内部 FILESTREAM 错误:无法访问垃圾回收表。

如果运行 dbcc checktable ('sys.filestream_tombstone_2073058421') ,可能会收到以下错误消息:

注意

消息 8951,级别 16,状态 1,Line LineNumber

表错误:表 dbcc checktable ('sys.filestream_tombstone_2073058421') (IDNumber) 。 数据行在索引“FSTSNCIdx” (IDNumber) 中没有匹配的索引行。 索引行匹配的键可能缺失或无效:

解决方法

此问题的修补程序包含在SQL Server的以下更新中:

SQL Server 2017 累积更新 13

SQL Server 2014 Service Pack 3 的累积更新 1

SQL Server 2014 Service Pack 2 的累积更新 15

关于SQL Server生成

SQL Server的每个新版本都包含上一版本中的所有修补程序和安全修补程序。 我们建议您安装 SQL Server 的最新版本:

SQL Server 2017 内部版本

SQL Server 2014 内部版本

解决方法

若要解决此问题,请使用 DBCC CHECKTABLE 命令重新生成数据库索引。

状态

Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。

参考资料

了解Microsoft用于描述软件更新的标准 术语