P1.
过程中的一段:
Create Index g_Bom_001 On #g_Bom(pInvCode,cInvCode)
执行完,返回数据有1682条 并出现如下错误提示:
警告!最大键长度为 900 字节。索引 'g_Bom_001' 的最大长度为 1020 字节。对于较大值的某些组合,插入/更新操作将失败。
求教 此错误中 键长具体是指哪部分的东西?
为谢。
P2.
MSDN :
症状
查询优化器执行更新查询, 时可能正确创建临时组合索引大于最大大小为 900 字节。 这时 SQL Server 7.0, 上收到以下错误信息:
错误: 服务器消息 1903, 级别 16, 状态 2, 行 2:
900 是索引的最大允许大小。 组合索引指定是 1028 字节。
在 SQL Server 2000, 如果临时索引中实际数据超过 900 字节, 收到以下错误信息:
服务器: 消息 1946, 级别 16, 状态 3, 行 2
操作失败!. 对索引 ' ' IndexName 1012 字节长度的索引项超过最大长度为 900 字节。
警告! 最大键长度为 900 字节。 ' IndexName ' 索引具有最大长度为 1028 字节。 对于某些组合的大型值, 插入/更新操作将失败。
注意在 SQL Server 2000, 如果临时索引中实际数据是小于 900 字节, 返回任何错误并更新成功完成。
回到顶端
解决方案
SQL Server 2000
要解决此问题, 获取用于 Microsoft SQL Server 2000 最新 ServicePack。 有关其他信息, 请单击下列文章编号以查看 Microsoft 知识库中相应:
290211 INF: 如何获得最新 SQL Server 2000 服务包 .
P3.
看了一下 pInvCode,cInvCode 字段, 255 255 其实都是 50个不到的字段, 也太浪费了.
不过第一个尝试是 想改为 text类型 :)
返回错误,
接着到数据库直接改字段 为 varchar 50
重新执行程序 ok.
P 4
组合索引值允许的最大大小为 900 字节。也就是说,组成组合索引的固定大小列的总长度不得超过 900 字节。
索引键允许的最大大小为 900 字节,不过 SQL Server 2000 允许在可能包含大量可变类型列的列上创建索引,而这些列的最大大小超过 900 字节。
在创建索引时,SQL Server 检查下列条件:
所有参与索引定义的固定数据列的总长度必须小于或等于 900 字节。当所要创建的索引只由固定数据列构成时,固定数据列的总计大小必须小于或等于 900 字节。否则将不能创建索引,且 SQL Server 将返回错误。
如果索引定义由固定类型列和可变类型列组成,且固定数据列满足前面的条件(小于或等于 900 字节),则 SQL Server 仍要检查可变类型列的总大小。如果可变类型列的最大大小与固定数据列大小的和大于 900 字节,则 SQL Server 将创建索引,不过将给用户返回警告消息以提醒用户:如果随后在可变类型列上的插入或更新操作导致总大小超过 900 字节,则操作将失败且用户将收到运行时错误。同样,如果索引定义只由可变类型列组成,且这些列的最大总大小大于 900 字节,则 SQL Server 将创建索引,不过将返回警告消息
//资料收集还可以. 却不可以给自己分. 可惜, 当时急呀,稍微查了一下没有结果就 贴出来了. .