Sql server 查找约束所属的表

Sql server 查找约束所属的表,sql-server,tsql,constraints,Sql Server,Tsql,Constraints,我需要找出特定约束属于哪个表(名称) 有人有任何TSQL来实现这一点吗?很多事情都可能被认为是一个约束: 主键 外键 唯一索引 检查约束 列默认值 你的问题有点含糊。您知道约束的名称、类型等吗 基于你问题中的有限信息。我建议您查看存储过程的源代码 在SQLServerManagementStudio中,使用对象资源管理器,必须导航到:“数据库”-“系统数据库”-“主机”-“可编程性”-“存储过程”-“系统存储过程”-“sys.sp_helpconstraint”。它包含用于查询各种约束的所有ts

我需要找出特定约束属于哪个表(名称)


有人有任何TSQL来实现这一点吗?

很多事情都可能被认为是一个约束:

主键
外键
唯一索引
检查约束
列默认值

你的问题有点含糊。您知道约束的名称、类型等吗

基于你问题中的有限信息。我建议您查看存储过程的源代码


在SQLServerManagementStudio中,使用对象资源管理器,必须导航到:“数据库”-“系统数据库”-“主机”-“可编程性”-“存储过程”-“系统存储过程”-“sys.sp_helpconstraint”。它包含用于查询各种约束的所有tsql。

这将找不到sys.index中的索引

SELECT
   OBJECT_NAME(o.parent_object_id)
FROM
   sys.objects o
WHERE
   o.name = 'MyConstraintName' AND o.parent_object_id <> 0
选择
对象\u名称(o.parent\u对象\u id)
从…起
系统对象
哪里
o、 名称='MyConstraintName'和o.parent\u对象\u id 0

gbn,您的解决方案不起作用

SELECT
   OBJECT_NAME(o.parent_object_id)
FROM
   sys.objects o
WHERE
   o.name = 'MyConstraintName' AND o.parent_object_id <> 0

很明显,您的“解决方案”必须基于大量未说明的模式假设。

查询不会产生任何结果吗?请参阅下面的帖子,因为注释不支持格式。使用模式名称:
选择schemas.name、OBJECT\u name(o.parent\u OBJECT\u id),*从sys.objects左键连接sys.schemas on o.schema\u id=schemas.schema\u id,其中o.name='MyConstraintName'和o.parent\u OBJECT\u id 0
SELECT NAME AS ObjectName
    ,schema_name(o.schema_id) AS SchemaName, OBJECT_NAME(o.parent_object_id) as TableName
    ,type
    ,o.type_desc
FROM sys.objects o
WHERE o.is_ms_shipped = 0
    AND o.NAME LIKE '%ConstraintUniqueID%'
ORDER BY o.NAME
(No column name)
SELECT NAME AS ObjectName
    ,schema_name(o.schema_id) AS SchemaName, OBJECT_NAME(o.parent_object_id) as TableName
    ,type
    ,o.type_desc
FROM sys.objects o
WHERE o.is_ms_shipped = 0
    AND o.NAME LIKE '%ConstraintUniqueID%'
ORDER BY o.NAME