select distinct [Table Name] = o.Name, [Found In] = sp.Name, sp.type_desc
from sys.objects o inner join sys.sql_expression_dependencies sd on o.object_id = sd.referenced_id
inner join sys.objects sp on sd.referencing_id = sp.object_id
and sp.type in ('P', 'FN')
where o.name = 'YourTableName'
order by sp.Name
15
非查询方式是使用Sql Server Management Studio .
找到该表,右键单击并选择“查看依赖关系” .
EDIT
但是,正如评论者所说,这不是很可靠 .
24
有时上面的查询不会给出正确的结果,有内置的存储过程可用于获取表依赖关系:
EXEC sp_depends @objname = N'TableName';
5
SELECT
o.name
FROM
sys.sql_modules sm
INNER JOIN sys.objects o ON
o.object_id = sm.object_id
WHERE
sm.definition LIKE '%<table name>%'
select distinct
so.name
--, text
from
sysobjects so,
syscomments sc
where
so.id = sc.id
and lower(text) like '%organizationtypeid%'
order by so.name
5
SELECT DISTINCT OBJECT_NAME(OBJECT_ID),
object_definition(OBJECT_ID)
FROM sys.Procedures
WHERE object_definition(OBJECT_ID) LIKE '%' + 'table_name' + '%'
GO
如果您必须提及表名,这将有效 .
14
在管理工作室中,您可以右键单击表格并单击以'View Dependencies'
你可以看到与你的表有依赖关系的对象列表:
0
试试这个
SELECT DISTINCT so.name
FROM syscomments sc
INNER JOIN sysobjects so ON sc.id=so.id
WHERE sc.TEXT LIKE '%your table name%'
10 回答
顺便说一句 - 这是这类问题的便利资源:Querying the SQL Server System Catalog FAQ
以下适用于SQL2008及更高版本 . 提供存储过程和函数的列表 .
非查询方式是使用Sql Server Management Studio .
找到该表,右键单击并选择“查看依赖关系” .
EDIT
但是,正如评论者所说,这不是很可靠 .
有时上面的查询不会给出正确的结果,有内置的存储过程可用于获取表依赖关系:
请记住,这也会打开表名在注释中的SP,或者表名是正在使用的另一个表名的子字符串 . 例如,如果您有名为“test”和“test_2”的表,并且您尝试使用“test”搜索SP,那么您将获得两者的结果 .
以下查询将获取所有存储过程名称以及这些SP的相应定义
下面的查询仅在搜索表上的依赖项而不是列上的依赖项时才有效:
但是,如果要搜索各种依赖项,以下查询是最佳选项,它不会遗漏任何内容 . 它实际上提供了比所需更多的信息 .
如果您必须提及表名,这将有效 .
在管理工作室中,您可以右键单击表格并单击以'View Dependencies'
你可以看到与你的表有依赖关系的对象列表:
试试这个