Я хочу найти список хранимых процедур с динамическими запросами в них.Найти список динамических хранимых процедур в SQL Server 2008
Есть ли какой-либо способ?
Я хочу найти список хранимых процедур с динамическими запросами в них.Найти список динамических хранимых процедур в SQL Server 2008
Есть ли какой-либо способ?
Это старт. Вы можете выполнить динамический SQL, используя EXEC
и sp_executesql
, так что вы хотите найти хранимые процедуры, содержащих эти команды:
SELECT
SP_NAME = o.name
FROM sys.sql_modules m
INNER JOIN sys.objects o
ON m.object_id = o.object_id
WHERE
m.definition LIKE '%EXEC%'
OR m.definition LIKE '%SP_EXECUTESQL%'
По предложению Coder Кодекса, вместо sys.objects
, вы могли бы JOIN
его sys.procedures
,
Вот другой способ в соответствии с моего поиска Google:
Использование sys.procedures
:
SELECT
SP_NAME = name
FROM sys.procedures
WHERE
OBJECT_DEFINITION(object_id) LIKE '%EXEC%'
OR OBJECT_DEFINITION(object_id)LIKE '%SP_EXECUTESQL%'
Использование sys.sql_modules
:
SELECT
SP_NAME = OBJECT_NAME(OBJECT_ID)
FROM sys.sql_modules
WHERE
OBJECTPROPERTY(OBJECT_ID, 'IsProcedure') = 1
AND (
definition LIKE '%EXEC%'
OR definition LIKE '%SP_EXECUTESQL%'
)
вы можете присоединиться к внутренней direactly на 'sys.procedures' получить только procedures.Or там какой-либо вопрос с этим? –
Вы тоже можете это сделать, это еще проще запомнить. Я отредактирую свой ответ. Благодаря! –
@wewesthemenace Ваш код по-прежнему не ссылается на sys.procedures – Adil
может быть это поможет
select * from sys.syscomments where text like '%exec%' AND 'SOME OTHER CONDITIONS'
Попробуйте это.
select b.name as Sp_Names from sys.syscomments a,sys.procedures b
where a.id=b.object_id and (a.text like '%exec%' or a.text like '%sp_executesql%')
выберите * из sys.syscomments где текст как «% ехес%» – KumarHarsh