症状
请考虑以下情况:
-
在 Microsoft SQL Server 2008 R2 中有两个或更多 位数据类型列的表。
-
创建包含两个或多个表中的 bit数据类型列的聚集索引。
-
在任何列上创建非聚集索引,并指定DATA_COMPRESSION 选项。
在这种情况下,你会收到以下错误:
消息1944、级别16、状态1、行 <行号>index "<索引名称>" 未创建。 此索引的密钥长度至少为-<长度> 字节。 允许的最大键长度为 <长度> 字节。
原因
出现此问题的原因是在此方案中不正确计算 " 位 数据类型" 列的空间需求。
解决方案
在 SQL Server 的以下累积更新中,此问题首先已修复。
SQL Server 2008 R2 SP2 的累积更新13 /en-us/help/2967540
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
解决方法
要解决此问题,请将列的数据类型从 "位 " 更改为 " tinyint"。
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。