【发布时间】:2015-04-01 07:34:05
【问题描述】:
识别包含动态 SQL 的存储过程的最佳方法是什么?我创建了这个 SQL 语句:
SELECT *
FROM sys.sql_modules
WHERE
REPLACE(definition,' ','') LIKE '%exec(%'
OR definition LIKE '%sp_executesql%'
OR REPLACE(definition,' ','') LIKE '%execute(%'
它会找到所有实例吗?
【问题讨论】:
-
只要你的动态 SQL 总是以 exec(定义, ' ', '')" 虽然看起来你让它工作得比它需要的更努力
-
你可以通过这种方式得到一些误报,但我想如果不解析 SQL 是不可避免的。
-
@ChristianBarron 我这样做是因为无法确定代码是如何编写的。它可以是“exec('select ...')”或“exec('select ...')”甚至是“exec('select ...')”
-
@KubaWyrostek 我可以忍受误报。但需要找到所有实例
标签: sql sql-server-2008 dynamic-sql