現象
Microsoft SQL Server 2014、2016、または2017で$PARTITIONキーワードを使用して、存在しないパーティション関数を参照するUPDATEステートメントがあるものとします。 例えば
UPDATE TableName SET ColumnName= ' xyz ' $PARTITIONNonExistingPartitionFunction (ColumnName) = 1
この場合、SQL Server は、 Nonexistingpartitionfunction オブジェクトが存在しないことを示すために、update を実行しないか、エラーメッセージを返します。 ただし、ユーザーの視点から見ると、 UPDATE ステートメントは正常に実行されているように見えますが、実際には失敗したようです。
原因
バッチを実行すると、SQL Server では、遅延名前解決 (一括処理) が実行されることがあります。 このプロセスでは、存在しないオブジェクトが検出されたときに SQL Server はすぐにエラーを生成せず、そのオブジェクトを参照するステートメントの実行前に、モジュールまたはバッチによってオブジェクトが作成されることを想定しています。 パーティション関数の場合、SQL Server では正しく処理が正しく処理されません。
詳細情報
"閲覧" の詳細については、「 遅延名前解決」を参照してください。
解決方法
この問題は、SQL Server の次の累積的な更新プログラムで修正されています。
SQL Server 用の新しい累積更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正が含まれています。 SQL Server の最新の累積的な更新プログラムを確認します。
SQL Server 2016 の最新の累積的な更新プログラム
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
関連情報
ソフトウェアの更新を説明するために Microsoft が使用する 用語について説明します。