这个倒挂的银色钥匙图标是什么

Phi*_*ppe 11 sql-server-2005 ssms

我继承了 SQL Server 2005 3rd 方服务器和数据库,以便能够生成报告和仪表板。

在一张桌子上,我发现了一个新图标:一个蓝银倒置键,旁边是我的其他主键和外键。

当我右键单击它时,上下文菜单为我提供了“脚本约束为”的选项,但是当我尝试“修改”它时,它会打开列设计表单(如主键),但是,它出现在“索引”部分,而不是约束。

有人知道它叫什么,用来做什么吗?

倒置键

Aar*_*and 12

它表示一个独特的约束。在 SQL Server 中,唯一约束实际上是作为索引实现的;这就是它也出现在Indexes节点下的原因(我无法很好地解释为什么它至少没有列在Constraints节点下,也不能很好地解释为什么他们选择了颠倒的键而不是不同的颜色)。

您应该在这里看到一个结果,以验证这实际上是作为索引实现的:

SELECT index_id, type_desc, is_unique_constraint
  FROM sys.indexes
  WHERE name = N'IX_tblCustIndex';
Run Code Online (Sandbox Code Playgroud)

你说你看到了“Script Constraint As...”——如果你坚持下去,它会为你提供一个类似的脚本:

ALTER TABLE [dbo].[tblCustIndex] ADD UNIQUE NONCLUSTERED 
(
  [some_column] ASC
) WITH (...a bunch of default options...)
Run Code Online (Sandbox Code Playgroud)

但是不要运行它,因为此语法不使用名称,它只会创建第二个冗余的唯一约束...

这是一个非常简单的重现,证明即使使用非常基本的语法,我也能在 2014 年得到颠倒的键:

CREATE TABLE dbo.foo(id INT UNIQUE);
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明 点击放大

现在,如果您显式创建唯一索引,您可以获得不同的图标(您将看到的唯一区别sys.indexes是 的名称和值is_unique_constraint):

在此处输入图片说明 点击放大

有关其他差异,请参阅此堆栈溢出答案