徵狀
假設您執行的查詢會使用大量的 INSERT 語句,在 SQL Server 2016 和2017中同時有一個非聚集的列存儲索引與聚集列存儲索引的資料表載入資料。 如果查詢是透過多個連線執行,且 SQL Server 無法將足夠的記憶體授與某些連線,大容量插入作業可能會失敗,而且您會收到如下所示的斷言錯誤:
錯誤:17066,嚴重性:16,狀態:1。
SQL Server Assertion: File: < qsupdate .cpp>,line = 902 失敗斷言 = ' nullptr! = m_prsBulkInPhases」。 此錯誤可能是與時間有關的。 如果在重新執行語句後發生錯誤,請使用 DBCC CHECKDB 來檢查資料庫的結構完整性,或重新開機伺服器以確保記憶體中資料結構未損毀。
錯誤:3624,嚴重性:20,狀態:1。
系統斷言檢查已失敗。 如需詳細資訊,請參閱 SQL Server 錯誤記錄。 通常,宣告失敗是由軟體錯誤或資料損毀所導致。 若要檢查資料庫是否損毀,請考慮執行 DBCC CHECKDB。 如果您同意在安裝期間將轉儲傳送至 Microsoft,則會將迷你轉儲傳送至 Microsoft。 在最新的 Service Pack 中,或從技術支援取得的修補程式中,可能會有 Microsoft 的更新。
此外,SQL Server 會產生一個 dump 檔案。
解決方案
此修正套裝程式含在 SQL Server 的下列累積更新中:
SQL Server 2016 的累積更新 8 Service Pack 1。
關於 SQL Server 組建
每個新組建的 SQL Server 2016 包含先前組建中的所有修復程式和安全性修正程式。 我們建議您安裝 SQL Server 的最新累計更新:
狀態
Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。
參考
瞭解 Microsoft 用於描述軟體更新的 術語 。