KB2671078 - 修正: SQL Server 2008、SQL Server 2008 R2、または SQL Server 2012 で MERGE ステートメントを使用すると「Attempting to set a non-NULL-able column's value to NULL」というエラー メッセージが表示される

適用先
SQL Server 2008 Enterprise SQL Server 2008 Developer SQL Server 2008 Standard SQL Server 2008 Workgroup SQL Server 2008 Web SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2008 R2 Web SQL Server 2008 R2 Workgroup SQL Server 2012 Business Intelligence SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2012 Web SQL Server 2012 Enterprise Core

Microsoft では、Microsoft SQL Server 2008、SQL Server 2008 R2、または SQL Server 2012 の修正を 1 つのダウンロード可能なファイルとして配布しています。 修正は累積的であるため、各新しいリリースには、以前の SQL Server 2008、SQL Server 2008 R2、または SQL Server 2012 の修正プログラム リリースに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています

現象

たとえば次のようなシナリオを考えてみます。

  • Microsoft SQL Server 2008、Microsoft SQL Server 2008 R2、または Microsoft SQL Server 2012 データベースのターゲット テーブルに対して挿入操作を実行しようとする。
  • ターゲット テーブルに、複数の外部キー (FK) 制約がある。
  • 挿入操作を実行するには、MERGE ステートメントを使用します。

このとき、次のエラー メッセージが表示されます。

注

メッセージ 681、レベル 16、状態 #、行#

注

NULL に設定できない列の値を NULL に設定しようとしています。

解決策

累積的な更新プログラムの情報

この問題は、次の SQL Server の累積的な更新プログラムで最初に修正されました。

SQL Server 2008 R2 SP2 の累積的な更新プログラム 10 /en-us/help/2908087

SQL Server 用の累積的な更新プログラムについて

SQL Server 用の新しい累積的な更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。 SQL Server の最新の累積的な更新プログラムを確認してください。

      

SQL Server 2012 Service Pack 1 の累積的な更新プログラム パッケージ 1 この問題の修正プログラムは、累積的な更新プログラム 1 で最初にリリースされました。 SQL Server 2012 Service Pack 1 用のこの累積的な更新プログラム パッケージを入手する方法の詳細については、以下のサポート技術情報番号をクリックしてください。

2765331 SQL Server 2012 Service Pack 1 の累積的な更新プログラム パッケージ 1 注: ビルドは累積的であるため、新しくリリースされた修正プログラムには、それ以前の SQL Server 2012 更新プログラムのリリースに含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。 この修正プログラムが含まれている最新リリースの修正の適用を検討することを推奨します。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。

2772858 SQL Server 2012 Service Pack 1 以降にリリースされた SQL Server 2012 のビルド

SQL Server 2008 R2 Service Pack 1 この問題の修正プログラムは、累積的な更新プログラム 8 で最初にリリースされました。 SQL Server 2008 R2 Service Pack 1 用のこの累積的な更新プログラム パッケージを入手する方法の詳細については、以下のサポート技術情報番号をクリックしてください。

2723743 SQL Server 2008 R2 SP1 の累積的な更新プログラム パッケージ 8 注: ビルドは累積的であるため、新しくリリースされた修正プログラムには、以前の SQL Server 2008 R2 Service Pack 1 更新プログラムのリリースに含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。 この修正プログラムが含まれている最新リリースの修正の適用を検討することを推奨します。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。

2567616 2008 R2 SP1 以降にリリースされた SQL Server 2008 R2 ビルドSQL Server

SQL Server 2012 この問題の修正プログラムは、SQL Server 2012 の累積的な更新プログラム 3 で最初にリリースされました。 この累積的な更新プログラム パッケージの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft サポート技術情報) をクリックしてください。

2723749 SQL Server 2012 用の累積的な更新プログラム パッケージ 3 注: ビルドは累積的であるため、新しくリリースされた各修正プログラムには、以前の SQL Server 2012 更新プログラムのリリースに含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。 マイクロソフトでは、この修正プログラムを含む最新の修正プログラム リリースを適用することを検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。

2692828 SQL Server 2012 以降にリリースされた SQL Server 2012 ビルド インストールされている SQL Server 2012 には、SQL Server 2012 修正プログラムを適用する必要があります。

SQL Server 2008 Service Pack 3 この問題の修正プログラムは、SQL Server 2008 Service Pack 3 の累積的な更新プログラム 6 で最初にリリースされました。 この累積的な更新プログラム パッケージの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft サポート技術情報) をクリックしてください。

2715953 SQL Server 2008 Service Pack 3 の累積的な更新プログラム パッケージ 6 注: ビルドは累積的であるため、新しくリリースされた修正プログラムには、以前の SQL Server 2008 更新プログラムのリリースに含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。 マイクロソフトでは、この修正プログラムを含む最新の修正プログラム リリースを適用することを検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。

2629969 SQL Server 2008 Service Pack 3 以降にリリースされた SQL Server 2008 ビルドには、特定の SQL Server Service Pack 用に Microsoft SQL Server 2008 修正プログラムが作成されます。 SQL Server 2008 Service Pack 3 のインストールには、SQL Server 2008 Service Pack 3 修正プログラムを適用する必要があります。 既定では、1 つの SQL Server Service Pack で提供されているすべての修正プログラムは、次の SQL Server Service Pack に含まれています。

SQL Server 2008 R2
この問題の修正プログラムは、累積的な更新プログラム 14 で最初にリリースされました。 SQL Server 2008 R2 用のこの累積的な更新プログラム パッケージを入手する方法の詳細については、以下のサポート技術情報番号をクリックしてください。

2703280 SQL Server 2008 R2 の累積的な更新プログラム パッケージ 14 注: ビルドは累積的であるため、新しい修正プログラムの各リリースには、以前の SQL Server 2008 R2 更新プログラムのリリースに含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。 この修正プログラムが含まれている最新リリースの修正の適用を検討することを推奨します。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。

981356 SQL Server 2008 R2 のリリース以降にリリースされた SQL Server 2008 R2 のビルド

SQL Server 2008 Service Pack 2 この問題の修正プログラムは、SQL Server 2008 Service Pack 2 の累積的な更新プログラム 9 で最初にリリースされました。 この累積的な更新プログラム パッケージを入手する方法の詳細については、以下のサポート技術情報番号をクリックしてください。

2673382 SQL Server 2008 Service Pack 2 の累積的な更新プログラム パッケージ 9 注: ビルドは累積的であるため、新しくリリースされた修正プログラムには、以前の SQL Server 2008 更新プログラムのリリースに含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。 この修正プログラムが含まれている最新リリースの修正の適用を検討することを推奨します。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。

2402659 SQL Server 2008 Service Pack 2 以降にリリースされた SQL Server 2008 ビルド

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。