現象
次のような状況で問題が発生します。
-
Microsoft SQL Server 2008 R2 で、2 ビット以上のデータ型の列を含むテーブルがある。
-
テーブルに2つ以上の ビットデータ型の列を含む集合インデックスを作成します。
-
任意の列に非クラスター化インデックスを作成し、 DATA_COMPRESSION オプションを指定します。
この場合、次のエラーが表示されます。
メッセージ1944、レベル16、状態1、行 <行番号>インデックス ' <インデックス名> ' は作成されませんでした。 このインデックスのキーの長さは <長さ> バイト以上です。 許容されるキーの最大長は <長さ> バイトです。
原因
この問題は、このシナリオでは ビット データ型の列のスペース要件が不適切に計算されるために発生します。
解決方法
この問題は、SQL Server の次の累積的な更新プログラムで最初に修正されました。
SQL Server 2008 R2 SP2 の累積更新プログラム13 /en-us/help/2967540
SQL Server 用の新しい累積更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正が含まれています。 SQL Server の最新の累積的な更新プログラムを確認します。
回避策
この問題を回避するには、列のデータ型をbit から tinyintに変更します。
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。