[SQL SERVER]索引大小出现的问题.

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 将创建索引,不过将返回警告消息


//资料收集还可以. 却不可以给自己分. 可惜, 当时急呀,稍微查了一下没有结果就 贴出来了. .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值