症状
请考虑以下情况:
-
您有一个非常大的 Filestream 表。
-
对 Filestream 表中的行执行删除查询,该查询将创建一个昂贵的查询计划,例如由内部联接筛选到系统中的另一个大型表。
-
查询优化器将选择并行执行计划。
在这种情况下,将出现一个 ssertion,你可能会在 SQL Server 错误日志中收到类似于以下内容的错误消息:
DateTime spid SpidNumber 错误:5553,严重性:20,状态:6。
DateTime spid SpidNumber SQL Server 内部错误。 FILESTREAM 管理器无法继续执行当前命令。
状态
Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。
解决方案
在 SQL Server 的以下累积更新中修复了此问题:
关于 SQL Server 的累积更新:
SQL Server 的每个新累积更新都包含 修补程序和上一版本附带的所有安全修补程序 累积更新。 查看 SQL Server 的最新累积更新:
解决方法
To 此问题的解决方法是,y ou 可以使用以下方法:
将内部联接查询移动到单独的语句并将结果保存到临时表中。 然后运行按临时表中的条目筛选的删除查询。 此外,你可以增加并行度的成本阈值,以强制优化程序序列化查询计划。
例如:
选择 "#T RefTable",从 OuterTable 内部联接数据库. dbo. RefTable ON RefTable = OuterTable。 alias =。
其中 OuterTable > 30006 和 OuterTable < 30010
从数据库 dbo 中删除。表"位置" 中的别名(从 #T 中选择 "*")
参考
了解有关术语 Microsoft 用于描述软件更新。