我希望编写一个查询,它将返回引用我想要重建的特定数据库的所有存储过程和视图。我还需要查询来返回返回的存储过程/视图包含的列和表名,以引用正在重建的数据库。
我现在有一个查询将返回存储的过程和视图,但是在返回引用数据库的列和表名时却没有成功。
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是当前存储存储过程和视图的数据库的名称,它也是正在重新创建的数据库。
答案 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