SQL Server 数据库中的孤立约束
-
15-11-2019 - |
题
运行以下查询会产生我们客户数据库中的所有约束。但是,结果集中的几行似乎没有父行,即 parent_object_id = 0
和 OBJECT_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 的未来版本中删除。
不隶属于 StackOverflow