已解决(SqlServer数据库创建索引)操作失败。索引 ‘index_words’ 的索引条目长度为 1542 字节,超出了允许的最大长度 900 字节。


文章目录

  • 报错代码
  • 报错原因
  • 解决方法
  • 千人全栈VIP答疑群联系博主帮忙解决报错


报错代码

粉丝群一个小伙伴想在SqlServer数据库上创建一个普通索引,但是还是发生了报错(当时他心里瞬间凉了一大截,跑来找我求助,然后顺利帮助他解决了,顺便记录一下希望可以帮助到更多遇到这个bug不会解决的小伙伴),报错代码如下::

ALTER TABLE 表名 ADD INDEX index_words ( Words )

报错信息截图如下:

SQL中还原数据库时提示 索引超出了数组界限 sqlserver索引超出了数组界限_sqlserver

操作失败。索引 ‘index_words‘ 的索引条目长度为 1542 字节,超出了允许的最大长度 900 字节。

报错原因

组合索引值允许的最大大小为 900 字节。也就是说,组成组合索引的固定大小列的总长度不得超过 900 字节。

索引键允许的最大大小为 900 字节,不过 SQL Server 2000 允许在可能包含大量可变类型列的列上创建索引,而这些列的最大大小超过 900 字节。

在创建索引时,SQL Server 检查下列条件:

所有参与索引定义的固定数据列的总长度必须小于或等于 900 字节。当所要创建的索引只由固定数据列构成时,固定数据列的总计大小必须小于或等于 900 字节。否则将不能创建索引,且 SQL Server 将返回错误。

如果索引定义由固定类型列和可变类型列组成,且固定数据列满足前面的条件(小于或等于 900 字节),则 SQL Server 仍要检查可变类型列的总大小。如果可变类型列的最大大小与固定数据列大小的和大于 900 字节,则 SQL Server 将创建索引,不过将给用户返回警告消息以提醒用户:如果随后在可变类型列上的插入或更新操作导致总大小超过 900 字节,则操作将失败且用户将收到运行时错误。

解决方法

解决方法1:删除较大字段解决方法2:索引定义只由可变类型列组成,且这些列的最大总大小大于 900 字节,则 SQL Server 将创建索引,不过将返回警告消息