SQL SERVER QUERY EXEC sp_helptext

时间:2017-02-06 05:56:43

标签: sql sql-server-2012

我想对数据库中的每个存储过程使用EXEC sp_helptext。

所以我想使用EXEC sp_stored_procedures并从中检索PROCEDURE_NAME以执行:EXEC sp_helptext PROCEDURE_NAME 循环。

任何帮助都将深表感谢。

2 个答案:

答案 0 :(得分: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 nulls或带引号的标识符设置为特别是什么。该脚本将创建一个可以满足您需求的脚本。

答案 1 :(得分:0)

无需为每个proc调用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'