【问题标题】:MS SQL Server - Cannot Create Same Index Name on Different TablesMS SQL Server - 无法在不同的表上创建相同的索引名称
【发布时间】:2018-06-21 20:57:45
【问题描述】:

我正在同一个数据库 (MS SQL Server) 中的两个单独的表上创建索引,但我收到一条错误消息,指出索引已存在。

如果我将索引名称更改为另一个,则不会再次出现此错误。

请帮忙。非常感谢。

来自 Microsoft SQL Server Management Studio 的屏幕截图

【问题讨论】:

  • 每个索引必须有一个唯一的名称。
  • 来自 MSDN,索引名称必须在表或视图中具有唯一名称,而不是在数据库中。我对吗? From MSDN我的索引名称“IX_Folder”在我的“文件夹”表中是唯一的。
  • @PsnTW,正确,索引名称只需要在表或视图中是唯一的,除非索引强制执行主键或唯一约束。尝试 DDL 而不是设计器。
  • Dan Guzman,我可以使用 DDL 成功创建索引。看来问题是由“Microsoft SQL Server Management Studio”的“表设计器”引起的。谢谢。
  • 仅供参考,我的“Microsoft SQL Server 管理”版本为 11.0.7001.0

标签: sql sql-server


【解决方案1】:

我强烈建议视觉设计师误入歧途。 IIRC,索引使用具有模式范围的名称(我认为早在 7.0 或 2000 时代。在用户/模式分离之前),后来获得了只需要在单个表中唯一的能力级别1

如果您尝试手动创建重复索引,则会收到错误:

操作失败,因为表“<table name>”上已存在名为“<name>”的索引或统计信息。

由于这显然不是您看到的错误,我强烈怀疑这是视觉设计器中的旧代码,也是不使用它的另一个原因。


1不幸的是,我们所处的区域中,Microsoft 网站上不再提供正确时期的历史文档。过去验证这些回忆更容易,因为您仍然可以在那里找到“SQL Server 2000 中的新增功能”等页面。

【讨论】:

  • 是的,你是对的。问题是由“Microsoft SQL Server Management Studio”的“表设计器”引起的。我可以通过 DDL 成功创建索引,而不是“表设计器”。谢谢。
猜你喜欢
  • 2020-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-26
  • 1970-01-01
  • 1970-01-01
  • 2019-10-03
相关资源
最近更新 更多