症状
假设你有一个 UPDATE 语句,该语句使用 Microsoft SQL Server 2014、2016或2017中的 $PARTITION 关键字引用不存在的分区函数。 例如,
更新 TableName 集 ColumnName= "xyz",其中 $PARTITION。NonExistingPartitionFunction (ColumnName) = 1
在这种情况下,SQL Server 不会执行更新或返回错误消息,以指示 NonExistingPartitionFunction 对象不存在。 但是,从用户角度看,虽然 UPDATE 语句已成功执行,但实际上它失败了。
原因
执行批处理时,SQL Server 可能会执行延迟的名称解析(DNR)。 在此过程中,SQL Server 在遇到不存在的对象时不会立即产生错误,并且预期该对象将在执行引用该对象的语句之前由模块或批处理创建。 对于分区函数,SQL Server 不会正确处理 DNR。
更多信息
有关 DNR 的详细信息,请参阅 延迟名称解析。
解决方案
在 SQL Server 的以下累积更新中修复了此问题:
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
参考
了解 Microsoft 用于描述软件更新的 术语。