运行以下查询会产生我们客户数据库中的所有约束。但是,结果集中的几行似乎没有父行,即 parent_object_id = 0OBJECT_NAME(parent_object_id) 回报 NULL.

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'

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

从它们的名字就可以看出,它们是在对结构进行大量改变之前的剩余物。

有帮助吗?

解决方案

使用 sp_helptext 我可以看到它们是使用创建的 CREATE DEFAULT 声明,例如:

CREATE DEFAULT dbo.MyDefault AS 2

这意味着它们只是未绑定的默认值,可以使用 sp_binddefault 根据 微软软件定义网络, ,并用一个简单的方法删除 DROP DEFAULT 陈述:

DROP DEFAULT dbo.MyDefault

我不知道这种语法,根据前面提到的 MSDN 文章,该语法显然将在 SQL Server 的未来版本中删除。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top