日期:2014-05-19  浏览次数:20517 次

关于unique约束
我想建立一个unique约束以防止重复数据的出现,但想要约束的列长度达到了4000字节。在企业管理器里面建立索引并勾选创建unique后会提示“索引或主键的总字节数不应超过900字节”。请问该如何解决呢?

------解决方案--------------------
See:
http://msdn2.microsoft.com/zh-cn/library/ms191241(SQL.90).aspx
------解决方案--------------------
索引中的可变类型列
索引键允许的最大大小为 900 字节,不过 SQL Server 2000 允许在可能包含大量可变类型列的列上创建索引,而这些列的最大大小超过 900 字节。

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

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


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

------解决方案--------------------
Sql server2000中任何键的最大字节数不能超过900可以用可变长度的列来定义键

------解决方案--------------------
这样实现不了吧,也会加重数据库的负担,不如增加列,抽取一定位置的内容和字段的长度作为比较依据,做一个插入、修改触发,如果抽取的数据有重复则比较这些重复的列的内容,确实不重复才允许操作