症状
假设你运行一个查询,该查询使用 BULK INSERT 语句将数据加载到 SQL Server 2016 和2017中具有非聚集列存储索引和聚集列存储索引的表中。 如果通过多个连接同时运行查询,并且 SQL Server 未向某些连接授予足够的内存,则大容量插入操作可能会失败,并且你会收到类似于以下内容的断言错误:
错误:17066,严重性:16,状态:1。
SQL Server 断言:文件: < qsupdate>,line = 902 失败断言 = "nullptr! = m_prsBulkInPhases"。 此错误可能与计时有关。 如果再次运行该语句后,该错误仍然存在,请使用 DBCC CHECKDB 检查数据库的结构完整性,或者重新启动服务器以确保内存中的数据结构未损坏。
错误:3624,严重性:20,状态:1。
系统断言检查失败。 有关详细信息,请查看 SQL Server 错误日志。 通常,断言失败由软件错误或数据损坏导致。 若要检查数据库是否损坏,请考虑运行 DBCC CHECKDB。 如果你同意在安装期间将转储发送到 Microsoft,则会向 Microsoft 发送一个小转储。 在来自 Microsoft 的最新服务包或来自技术支持的修补程序中,可能会提供更新。
此外,由 SQL Server 生成转储文件。
解决方案
此修补程序包含在 SQL Server 的以下累积更新中:
SQL Server 2016 Service Pack 1 的累积更新 8 。
关于 SQL Server 内部版本
SQL Server 2016 的每个新版本都包含上一版本中的所有修补程序和安全修补程序。 我们建议你为 SQL Server 安装最新的累积更新:
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
参考
了解 Microsoft 用于描述软件更新的 术语 。