Applies ToSQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Standard on Windows

症状

假设你运行一个查询,该查询使用 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 2017 累积更新6

SQL Server 2016 Service Pack 1 的累积更新 8

关于 SQL Server 内部版本

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

SQL Server 2017 的最新累计更新

SQL Server 2016 的最新版本

状态

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

参考

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

需要更多帮助?

需要更多选项?

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

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