索引或主键的总大小不能超过900个字节

时间:2010-09-10 16:36:11

标签: sql-server

当我尝试为7列创建英国时,我得到了

  

索引或主键的总大小   不能超过900字节。

如何解决此错误?

3 个答案:

答案 0 :(得分:9)

没有什么特别令人满意的。有关如何在超过900字节限制的列上强制执行唯一约束的一些建议,请参阅this article

  • CHECKSUM(可能的碰撞)
  • 触发器(高开销,可能在快照隔离下失败)
  • HASHBYTES(碰撞机会少但仍有可能)

答案 1 :(得分:1)

除了显而易见的(改变这7列的大小),没有设置或类似。但是,您可以通过使用触发器来强制执行此操作,以确保这7列是唯一的。

答案 2 :(得分:0)

如果您使用SSMS,将收到此错误,并且将无法创建索引。

但是您可以将其脚本化,并且创建相同的索引将产生警告。

  

警告!最大密钥长度为900字节。指标   “ IX_Member_LoginName”的最大长度为2000个字节。对于一些   组合较大的值,则插入/更新操作将失败。

脚本是

 CREATE NONCLUSTERED INDEX [IX_Members_LoginName] ON [dbo].[Members] 
 (
    [LoginName] ASC 
  )
 WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE =
 OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF,
 ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]