返回参考特定数据库的存储过程,表和列

时间:2017-07-19 13:10:58

标签: sql-server database stored-procedures sql-view

我希望编写一个查询,它将返回引用我想要重建的特定数据库的所有存储过程和视图。我还需要查询来返回返回的存储过程/视图包含的列和表名,以引用正在重建的数据库。

我现在有一个查询将返回存储的过程和视图,但是在返回引用数据库的列和表名时却没有成功。

SELECT Distinct so.Name, so.type--, sc.text
FROM sysobjects so(NOLOCK)
INNER JOIN syscomments sc (NOLOCK) on so.Id = sc.ID

WHERE so.Type in( 'p' , 'v')
AND sc.Text LIKE '%membership_dw.%'
ORDER BY so.Name

Membership_DW是当前存储存储过程和视图的数据库的名称,它也是正在重新创建的数据库。

1 个答案:

答案 0 :(得分:0)

这是一个快速而肮脏的查询

;WITH cte as(
select * 
from sys.sysdepends t1
inner join sys.objects t2 on t1.depid = t2.object_id
where t2.type = 'U' and is_ms_shipped = 0)
SELECT t5.name as SP_NAME, t6.name as TBL_NAME, t9.name COLNAME from         sys.objects t5 
INNER JOIN cte t6 on t6.id = t5.object_id
INNER JOIN sys.columns t9 on t6.object_id = t9.object_id
where t5.is_ms_shipped = 0 and t6.name not like 'sys%'
order by sp_name, TBL_NAME