假设我的数据库中有10,000个存储过程,每个存储过程都有一千个LOC。其中一些存储过程使用动态临时表。我想找出所有使用动态临时表的存储过程。
有人可以帮助我完成此任务的最优化查询吗?
答案 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 #
的所有存储过程的列表 - 这是创建一个临时表。
既然您已经明确了“动态临时表”的含义,那么您需要做的就是更改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 #%'