症狀
假設你有一個 UPDATE 陳述句,透過 2014、2016 或 2017 SQL Server Microsoft $PARTITION關鍵字,參考一個不存在的分割函數。 例如,
注意
更新 TableName SET 欄位名稱='xyz' WHERE $PARTITION.NonExistingPartitionFunction (欄位名稱) = 1
此時 SQL Server 不會執行更新或回傳錯誤訊息,表示 NonExistingPartitionFunction 物件不存在。 然而,從使用者的角度來看, UPDATE 陳述式似乎是成功執行,但實際上卻失敗了。
原因
當你執行批次時,SQL Server可能會執行延遲名稱解析 (DNR) 。 在此過程中,SQL Server 遇到不存在的物件不會立即產生錯誤,且預期該物件會由模組或批次在執行參考該物件的敘述前建立。 對於分割函式,SQL Server 無法正確處理 DNR。
更多資訊
欲了解更多DNR相關資訊,請參閱 延後命名決議。
解決方式
此問題已在以下 SQL Server 的累積更新中得到修正:
關於 SQL Server 的累積更新:
每次新的 SQL Server 累積更新都包含了之前累積更新中包含的所有熱修補與安全修補。 請查看 SQL Server 的最新累積更新:
狀態
Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。
參考資料
了解 Microsoft 用來說明軟體更新的術語。