Sql server 如何找到与约束对应的列?

Sql server 如何找到与约束对应的列?,sql-server,Sql Server,我正在使用SQLServer2008作为web应用程序 我有一个表,它对一些列有约束。运行web应用程序时,我遇到一个数据库错误: 违反唯一密钥约束“UQ_uu客户_uudddfdd3762e4aa3c”。无法在对象“dbo.Customer”中插入重复的密钥。重复的键值为() 我有一种直觉,是哪个专栏引起了这个问题 但是,在Microsoft SQL Server Management Studio中是否有任何方法可用于精确定位列?右键单击表,然后选择将表作为脚本创建为->新建查询编辑器窗口。

我正在使用SQLServer2008作为web应用程序

我有一个表,它对一些列有约束。运行web应用程序时,我遇到一个数据库错误:

违反唯一密钥约束“UQ_uu客户_uudddfdd3762e4aa3c”。无法在对象“dbo.Customer”中插入重复的密钥。重复的键值为()

我有一种直觉,是哪个专栏引起了这个问题


但是,在Microsoft SQL Server Management Studio中是否有任何方法可用于精确定位列?

右键单击表,然后选择
将表作为脚本创建为
->
新建查询编辑器窗口
。这将列出表上的所有约束及其名称

或者,单击表旁边的
+
,然后单击约束旁边的
+
。您的约束应该列在那里。您可以双击对其进行编辑,或按照上表所述编写脚本

select * from
INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
where CONSTRAINT_NAME = '.....'
编辑:

如果约束未出现在
信息\u架构中
,您可以尝试在sys*表中查找它:

select c.name as [column], t.name as [table] 
from sysobjects o 
    inner join syscolumns c on o.id = c.cdefault
    inner join sysobjects t on c.id = t.id
where o.name = 'UQ....'

试试这样的。它将为您提供所有唯一约束的列表

SELECT TC.CONSTRAINT_CATALOG as [Database],
TC.CONSTRAINT_SCHEMA as [Schema],
TC.TABLE_NAME as [Table],
CCU.COLUMN_NAME as [Column]
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC
INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE CCU on TC.CONSTRAINT_NAME = CCU.CONSTRAINT_NAME
WHERE TC.CONSTRAINT_TYPE = 'UNIQUE'

谢谢你的来电。导致问题的约束是唯一的键约束,不显示在“脚本表as->创建到->新建查询编辑器窗口”中,其中仅列出FK键。当我单击约束旁边的+时,它是空的。对,唯一的约束将作为唯一索引列出。检查表下的
+索引
。查看
工具->选项->SQL Server对象资源管理器->脚本编写
,然后查看
表格和视图选项
,选择将随表格一起编写脚本的内容。我尝试了“从信息中选择*SCHEMA.CONSTRAINT\u COLUMN\u用法,其中约束的名称类似于“UQ%”,但上面提到的约束没有显示出来。我确实看到了其他UQ约束