减少数据类型大小会导致索引超过最大大小?

时间:2017-08-07 00:13:00

标签: sql-server database indexing ssms sql-server-2016

今天我面临着一个奇怪的信息。我不确定这只是一个错误:

enter image description here

表由ASP.NET Identity创建。但是,他们使用nvarchar(450)作为Id,我不能在其他表中使用,因为索引超过900个字节。因此我试图减少它,但是如何才能创建PK_AspNetUserRoles?它只是一个SSMS错误吗?

1 个答案:

答案 0 :(得分:0)

您的SSMS版本是什么? 恕我直言,这是一个错误,我无法在12.0.4100.1中重现这个问题。

如果不重新创建索引,则无法更改列类型,因此您可能收到的错误可能是:

Msg 5074,Level 16,State 1,Line 4 索引' PK_AspNetUserRoles'依赖于列' UserId'。 Msg 4922,Level 16,State 9,Line 4 ALTER TABLE ALTER COLUMN UserId失败,因为一个或多个对象访问此列。

但我的SSMS只是默默地做了以下事情:

  • 创建具有相同名称和tmp前缀的新表 为nvarchar(150)列
  • 从原始表
  • 插入新表select *
  • drop original table
  • 将新表重命名为旧表
  • 在其上创建索引PK

未显示错误