2011-05-19 40 views
3

在客户端数据库的所有约束条件中运行以下查询结果。但是,结果集中的几行似乎没有父级,即parent_object_id = 0OBJECT_NAME(parent_object_id)返回NULLSQL Server数据库中的孤行约束条件

SELECT name, type_desc, OBJECT_NAME(parent_object_id), parent_object_id 
FROM sys.objects 
WHERE is_ms_shipped = 0 
AND type_desc LIKE '%_CONSTRAINT' 

这是否意味着数据库中存在孤儿约束?如果是这样,我该如何删除这些?

从他们的名字,我可以看到他们是来自大量改变结构之前的剩菜。

+1

这应该是不可能的。你最近运行了DBCC吗? – gbn 2011-05-19 12:35:25

+0

是的,它结帐很好 – bernhof 2011-05-19 13:55:54

回答

5

使用sp_helptext我可以看到他们使用一个CREATE DEFAULT语句创建,例如:

CREATE DEFAULT dbo.MyDefault AS 2 

这意味着它们仅仅是未结合的默认值,可使用的约束sp_binddefault根据MSDN,并用简单的除去DROP DEFAULT声明:

DROP DEFAULT dbo.MyDefault 

我不知道这个语法,这显然会在SQL Server的未来版本中被删除的,根据aforementi MSDN文章。

+0

良好的通话。我没有多年使用这个功能,并没有想到它。 – gbn 2011-05-20 13:41:30