sta*_*ser 15 t-sql sql-server stored-procedures sql-server-2008
我有一堆存储过程名称.我想导出每个存储过程的创建脚本.最好的方法是什么?
现在我在SSMS中手动选择存储过程并选择"Script stored procedure as -> Drop and Create to"
.这似乎很乏味.我希望有更好的方法来解决这个问题.谢谢.
mar*_*c_s 22
您可以在对象资源管理器中右键单击数据库,然后执行"任务">"生成脚本".
alt text http://i25.tinypic.com/2khmr8.png
这允许您选择要编写脚本的一大堆对象(例如,表,视图,存储过程),并且可以将它们存储到单个大型SQL文件中,或者每个对象存储一个SQL文件.工作真的很好!
更新:如果要在SQL Server Management Studio应用程序中执行此操作,可以使用此SQL脚本查找存储的过程及其定义 - 但是,您无法将SQL Server Mgmt Studio写入磁盘,而不是工作 - 但您可以将结果复制到Excel中.
SELECT
pr.name ,
pr.type_desc ,
pr.create_date ,
mod.definition
FROM sys.procedures pr
INNER JOIN sys.sql_modules mod ON pr.object_id = mod.object_id
WHERE pr.Is_MS_Shipped = 0
Run Code Online (Sandbox Code Playgroud)
要编写符合特定条件的所有符号,您可以使用类似下面的内容.
DECLARE @t VARCHAR(max) = '';
SELECT @t = @t +
'If OBJECT_ID(''' + QUOTENAME(OBJECT_SCHEMA_NAME(object_id)) + '.' + QUOTENAME(OBJECT_NAME(object_id)) + ''',''p'') IS NOT NULL
DROP PROCEDURE ' + QUOTENAME(OBJECT_SCHEMA_NAME(object_id)) + '.' + QUOTENAME(OBJECT_NAME(object_id)) + '
GO
SET ANSI_NULLS '
+ CASE
WHEN uses_ansi_nulls = 1 THEN 'ON'
ELSE 'OFF'
END
+ '
GO
SET QUOTED_IDENTIFIER '
+ CASE
WHEN uses_quoted_identifier = 1 THEN 'ON'
ELSE 'OFF'
END
+ '
GO
' + definition + '
GO
'
FROM [sys].[sql_modules]
WHERE OBJECTPROPERTY (object_id,'IsProcedure' )=1
AND OBJECT_NAME(object_id) LIKE '%some_patttern%'
/*Stops the long text from getting truncated in SSMS*/
SELECT @t AS [processing-instruction(x)]
FOR XML PATH('')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
25255 次 |
最近记录: |