2017-02-06 3 views
0

Я хочу использовать EXEC sp_helptext для каждой хранимой процедуры в базе данных.SQL SERVER QUERY EXEC sp_helptext

Так что я хотел бы использовать EXEC sp_stored_procedures и получить имя_процедуры от его выполнения: EXEC sp_helptext имя_процедуры в петле.

Любая помощь будет глубоко оценена.

ответ

0

Нет необходимости вызывать sp_helptext за прок, вы можете получить их все в одном запросе:

select sm.definition 
from sys.sql_modules sm 
inner join sys.objects o on o.object_id = sm.object_id 
where o.type = 'P' 
0
select 'PRINT ''SET QUOTED_IDENTIFIER ' + case uses_quoted_identifier when 1 then 'ON''' else 'OFF' + '''' end + char(13) + char(10) 
+ 'PRINT ''GO ''' + char(13) + char(10) 
+ 'PRINT ''SET ANSI_NULLS ' + case uses_ansi_nulls when 1 then 'ON''' else 'OFF' + '''' end + char(13) + char(10) 
+ 'PRINT ''GO ''' + char(13) + char(10) 
+ 'GO' 
+ char(13) + char(10) + 'sp_helptext ' + o.name + char(13) + char(10) + 'GO' + char(13) + char(10) 
+ 'PRINT ''GO ''' + char(13) + char(10) 

FROM   sys.all_sql_modules AS m 
JOIN   sys.all_objects AS o 
ON     m.Object_ID = o.Object_ID 
JOIN   sys.schemas AS s 
ON     o.schema_id = s.schema_id 
WHERE   o.is_ms_shipped=0 
------------------------------------------------------ 
-- custom filters below 
------------------------------------------------------ 

and o.type = 'SP' 

Таким образом, все, что другие вещи в самом начале, потому что sp_helptext не имеют или не ANSI обнуляет или кавычки идентификаторы были установлены на что-либо, в частности. Этот скрипт создаст скрипт, который, надеюсь, будет запущен для ваших нужд.