徵狀
請試想下列案例:
-
在 Microsoft SQL Server 2008 R2 中,有兩個或多個 bit資料類型欄的表格。
-
您可以在資料表中建立包含兩個或多個 bit資料類型欄的叢集索引。
-
您可以在任何資料行上建立非叢集索引,並指定DATA_COMPRESSION 選項。
在這種情況下,您會收到下列錯誤:
Msg 1944、Level 16、State 1、Line <行號>index "<index Name>" 未建立。 這個索引的金鑰長度必須至少為 <長度> 位元組。 允許的最大金鑰長度為 <長度> 位元組。
原因
之所以會發生此問題,是因為在這個案例中, bit 資料類型欄的空間需求計算錯誤。
解決方案
此問題最初是在 SQL Server 的後續累積更新中修正。
針對 SQL Server 2008 R2 SP2 累積更新13 /en-us/help/2967540
每個新的 SQL Server 累計更新都包含所有的修正程式,以及前一個累積更新中所包含的所有安全性修正程式。 查看 SQL Server 的最新累計更新:
因應措施
若要解決此問題,請將資料行的資料類型從 [位 ] 變更為 [ Tinyint]。
狀態
Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。