Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 索引超过SQL Server中的最大长度_Sql Server_Indexing - Fatal编程技术网

Sql server 索引超过SQL Server中的最大长度

Sql server 索引超过SQL Server中的最大长度,sql-server,indexing,Sql Server,Indexing,我正在犯错误。如何修复它?为什么我会犯这个错误 消息操作失败。索引ix_Emp_no_1的长度为1526字节的索引项超过了最大长度900字节 我从未见过这篇文章,但我发现这篇文章可能会帮助你处理你的情况。 听起来你有一个超过900字节的密钥,可能是一个大的文本字段。因此,您需要找到一种不同的方法来标识该行。尝试索引其他列并包含问题列。每个索引键的最大字节数 900字节用于聚集索引 1700表示非聚集索引 结果和意义: 如果您有一个nchar(450),因为Unicode字符占用2个字节,

我正在犯错误。如何修复它?为什么我会犯这个错误

消息操作失败。索引ix_Emp_no_1的长度为1526字节的索引项超过了最大长度900字节


我从未见过这篇文章,但我发现这篇文章可能会帮助你处理你的情况。


听起来你有一个超过900字节的密钥,可能是一个大的文本字段。因此,您需要找到一种不同的方法来标识该行。尝试索引其他列并包含问题列。

每个索引键的最大字节数

  • 900字节用于聚集索引
  • 1700表示非聚集索引
结果和意义:

  • 如果您有一个nchar(450),因为Unicode字符占用2个字节,那么它将等于900个字节
  • 您可以忽略Unicode而改用char(900)
  • 对于变量字符串类型,如varchar和nvarchar,它似乎以相同的方式工作
  • 如果您的复合键包含多个列,则它们的总和必须小于此限制
注意:有时SSMS设计器不允许您创建大于900字节(直到1700字节)的索引,但它是官方支持的。您只需要生成脚本并自己运行它


来源:

直接来自文档。“在SQL Server中,聚集索引键中的最大字节数不能超过900。”因为索引ix_Emp_no_1的长度为1526字节的索引项超过了最大长度900字节。您试图放入索引中的所有列的组合可能最大长度不能超过900字节。显然,在你的情况下,就是这样。如何修复它??将越来越少的列放入索引添加表的脚本,并在脚本下面使用索引。创建表T_Index_Test(产品VARCHAR(50)NOT NULL,F_PHY_Name nvarchar(1000)NOT NULL约束PK_T_Index_Test主键(产品,F_PHY_Name))插入T_Index_Test选择“A0001”,将(复制('x',899)转换为VARCHAR(1000))非常感谢。