症状

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

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

日期时间spid、未知、错误: 5571<c/> 严重性: 23<c/> 状态:3。日期时间spid、未知、内部 FILESTREAM 错误:无法访问垃圾回收表。

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

消息8951、级别16、状态1、行 LineNumber

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

解决方案

适用于此问题的修复程序包含在 SQL Server 的以下更新中:

SQL Server 2017 累积更新13         

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

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

关于 SQL Server 内部版本

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

SQL Server 2017 内部版本

SQL Server 2014 内部版本

解决方法

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

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

参考

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

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。