我需要找出特定约束属于哪个表(名称)。
有没有人有任何TSQL来实现这个目标?
答案 0 :(得分:27)
这将找不到sys.indexes
中的索引SELECT
OBJECT_NAME(o.parent_object_id)
FROM
sys.objects o
WHERE
o.name = 'MyConstraintName' AND o.parent_object_id <> 0
答案 1 :(得分:2)
许多事情都可以被视为一种约束:
主键
外键
独特指数
检查约束
列默认
你的问题有点模糊。你知道约束的名称,类型等吗?
根据您问题中的有限信息。我建议您查看master.sys.sp_helpconstraint存储过程的源代码。
在Sql Server Management Studio中,使用对象资源管理器,导航到:“数据库” - “系统数据库” - “主” - “可编程性” - “存储过程” - “系统存储过程” - “sys.sp_helpconstraint ”。它包含了查询所有各种约束的所有tsql。
答案 2 :(得分:0)
gbn,您的解决方案无法正常工作吗?
SELECT
OBJECT_NAME(o.parent_object_id)
FROM
sys.objects o
WHERE
o.name = 'MyConstraintName' AND o.parent_object_id <> 0
因此,如果“ MyConstraintName”变为“ FK_myConstraint” 然后查询变为
SELECT OBJECT_NAME(o.parent_object_id)
FROM sys.objects o
WHERE o.name = 'MyConstraintName'
AND o.parent_object_id <> 0
没有结果
(No column name)
它似乎表明您的“解决方案”必须基于对该架构的许多未陈述的假设。
答案 3 :(得分: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