我正在编写一个 DDL 脚本来删除一些表,但需要首先确定这些表的所有依赖项。这些依赖项包括外键约束、存储过程、视图等。最好,我想在删除依赖表之前以编程方式使用系统表/视图删除这些依赖项。
Ray Vega
问问题
937 次
5 回答
3
从头开始编写非常混乱。您是否考虑过像 Red-Gate SQL Dependency Tracker这样的第 3 方工具?
于 2008-09-09T23:06:06.830 回答
1
sp_depends 不可靠 请参阅:Do you depend on sp_depends (no 双关语)
于 2008-09-09T23:02:01.880 回答
0
您可以随时搜索 syscomments 表……不过这可能需要一段时间……
于 2008-09-09T23:09:04.810 回答
0
你能参考一下sysreferences
吗?
select 'if exists (select name from sysobjects where name = '''+c.name+''') '
+' alter table ' + t.name +' drop constraint '+ c.name
from sysreferences sbr, sysobjects c, sysobjects t, sysobjects r
where c.id = constrid
and t.id = tableid
and reftabid = r.id
and r.name = 'my_table'
这将产生大量的条件drop constraint
调用。应该管用。
于 2009-06-18T03:23:01.300 回答
-2
您可以使用 sp_depends 存储过程来执行此操作:
USE AdventureWorks
GO
EXEC sp_depends @objname = N'Sales.Customer' ;
http://msdn.microsoft.com/en-us/library/ms189487(SQL.90).aspx
于 2008-09-09T22:58:14.183 回答