关于数据库:在 SQL Server 中,如何使用系统表/视图识别特定表的*所有*依赖项?

关于数据库:在 SQL Server 中,如何使用系统表/视图识别特定表的*所有*依赖项?

In SQL Server, how do I identify *all* dependencies for a specific table using system tables/views?

我正在编写一个 DDL 脚本来删除一些表,但需要首先确定这些表的所有依赖项。这些依赖项包括外键约束、存储过程、视图等。最好在删除依赖表之前以编程方式使用系统表/视图删除这些依赖项。


从头开始编写非常混乱。您是否考虑过第三方工具,例如
Red-Gate SQL 依赖跟踪器?


sp_depends 不可靠 请参阅:Do you depend on sp_depends(没有双关语)


你能参考一下sysreferences吗?

1
2
3
4
5
6
7
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 调用。应该工作。


你总是可以搜索 syscomments 表……不过这可能需要一段时间……


您可以使用 sp_depends 存储过程来执行此操作:

USE AdventureWorks
GO
EXEC sp_depends @objname = N'Sales.Customer' ;

http://msdn.microsoft.com/en-us/library/ms189487(SQL.90).aspx


推荐阅读

    linux删除本行命令?

    linux删除本行命令?,系统,本行,档案,命令,资料,商业,文件,终端,目录,文件名,L

    linux查u盘系统命令?

    linux查u盘系统命令?,系统,设备,电脑,信息,管理,定期,软件,密码,生产,百分比

    linux系统关键命令?

    linux系统关键命令?,地址,工作,系统,信息,命令,目录,检测,环境,工具,设备,Lin

    linux系统命令终端?

    linux系统命令终端?,系统,首页,终端,设备,电脑,情况,信息,命令,界面,用户,lin

    linux系统vi命令?

    linux系统vi命令?,档案,状态,系统,命令,正规,数字,模式,编辑,文件,光标,linux

    linux命令关闭视图?

    linux命令关闭视图?,系统,状态,管理,百分比,信息,情况,基础,软件,观察,首次,

    linux系统命令调用?

    linux系统命令调用?,系统,单位,工具,工作,管理,地址,权威,密码,电脑,信息,怎

    虚拟机linux系统命令?

    虚拟机linux系统命令?,系统,工具,软件,名字,时间,命令,工作,首次,环境,名称,L

    linux系统分屏命令?

    linux系统分屏命令?,系统,工具,地址,工作,命令,基础知识,信息,时间,情况,技

    linux系统中剪切命令?

    linux系统中剪切命令?,工作,系统,地址,信息,命令,目录,管理,标准,工具,文件,L

    linux系统ll命令?

    linux系统ll命令?,信息,系统,数据,时间,文件,命令,权限,观察,第一,数字,用ll

    linux命令行系统录屏?

    linux命令行系统录屏?,工具,地方,系统,工作,地址,命令,服务,环境,状态,目录,

    终止linux系统的命令?

    终止linux系统的命令?,系统,传播,命令,电脑,软件,工作,管理,情况,进程,指令,l

    linux快速删除命令行?

    linux快速删除命令行?,系统,软件,名称,数据,命令,文件,档案,不了,电脑,通用,l

    linux系统光盘命令?

    linux系统光盘命令?,系统,工作,信息,数据,地址,命令,一致,名称,盘中,传播,如

    删除linux文件命令?

    删除linux文件命令?,名称,不了,文件夹,命令,文件,目录,方法,指令,子目录,选

    linux系统反回命令?

    linux系统反回命令?,密码,系统,终端,环境,名称,状态,信息,电脑,一致,命令,lin

    linux下删除用户命令?

    linux下删除用户命令?,系统,代码,邮箱,用户组,命令,用户,名称,管理,电脑,账

    linux的删除所有命令?

    linux的删除所有命令?,不了,系统,名称,命令,文件夹,文件,目录,档案,数据,环

    linux删除类型命令?

    linux删除类型命令?,系统,档案,命令,文件,名称,环境,数据,不了,目录,文件夹,