查询使用动态临时表查找存储过程

时间:2017-10-13 18:02:56

标签: stored-procedures sql-server-2016

假设我的数据库中有10,000个存储过程,每个存储过程都有一千个LOC。其中一些存储过程使用动态临时表。我想找出所有使用动态临时表的存储过程。

有人可以帮助我完成此任务的最优化查询吗?

1 个答案:

答案 0 :(得分:0)

你可以从这样的事情开始:

SELECT s.name As schema_name, p.name as procedure_name
FROM sys.procedures p
INNER JOIN sys.schemas s
ON p.schema_id = s.schema_id
WHERE object_definition(object_id) like '%create table #%'

我很坚定你的“动态临时表”是什么意思,我也不确定性能,但这应该给你一个包含文本create table #的所有存储过程的列表 - 这是创建一个临时表。

See a live demo or rextester.

更新(再次)

既然您已经明确了“动态临时表”的含义,那么您需要做的就是更改where子句中的条件:

SELECT s.name As schema_name, p.name as procedure_name
FROM sys.procedures p
INNER JOIN sys.schemas s
ON p.schema_id = s.schema_id
WHERE object_definition(object_id) like '%[^insert] into #%'