現象
たとえば次のようなシナリオを考えてみます。
- Microsoft SQL Server 2008 R2 には、2 つ以上のビット データ型列があるテーブルがあります。
- テーブルに 2 つ以上のビット データ型列を含むクラスター化インデックスを作成します。
- 任意の列に非クラスター化インデックスを作成し、DATA_COMPRESSION オプションを指定します。
この状況では、次のエラーが発生します。
注
Msg 1944、レベル 16、状態 1、行 <行番号>
インデックス '<Index Name>' が作成されませんでした。 このインデックスのキー長は、少なくとも -<Length> バイトです。 最大許容キー長は <Length> バイトです。
原因
この問題は、このシナリオでビット データ型列の領域要件が正しく計算されないために発生します。
解決策
この問題は、SQL Serverの次の累積的な更新プログラムで最初に修正されました。
SQL Server 2008 R2 SP2 /en-us/help/2967540 の累積的な更新プログラム 13
SQL Server 用の累積的な更新プログラムについて
SQL Serverの各新しい累積的な更新プログラムには、すべての修正プログラムと、以前の累積的な更新プログラムに含まれていたすべてのセキュリティ修正プログラムが含まれています。 SQL Serverの最新の累積的な更新プログラムを確認してください。
回避策
この問題を回避するには、列のデータ型を bit から tinyint に変更します。
状態
Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。