通过SQL脚本导出存储过程

Ham*_*han 7 sql backup ssms stored-procedures sql-server-2005

是:如何使用查询备份选定的存储过程

我想通过命令行(在SQL Server Management Studio中)备份200个存储过程中的10个.有一个简单的方法吗?

现在我正在使用Database-> Tasks-> Generate Scripts选项,它会引导我完成一系列对话框,我选择要导出的SP.我想让这个过程变得简单,所以我不必再重复一遍.

注意:通过导出我的意思是只是将其打印在屏幕上,这样我就可以将其复制并保存在文本文件中.

Sam*_*lgh 10

如何使用INFORMATION_SCHEMA.Routines?

DECLARE MY_CURSOR Cursor
FOR
SELECT r.Routine_Definition
FROM INFORMATION_SCHEMA.Routines r 
OPEN MY_CURSOR
    DECLARE @sproc VARCHAR(MAX) 
    FETCH NEXT FROM MY_CURSOR INTO @sproc
    WHILE (@@FETCH_STATUS <> -1)
    BEGIN
        IF (@@FETCH_STATUS <> -2)
        PRINT @sproc
        FETCH NEXT FROM MY_CURSOR INTO @sproc
    END
CLOSE MY_CURSOR
DEALLOCATE MY_CURSOR
GO
Run Code Online (Sandbox Code Playgroud)

编辑

听起来你可能想要这样的东西在结果集中包含LAST_ALTERED日期和定义.

SELECT
    r.LAST_ALTERED,
    r.ROUTINE_NAME,
    r.Routine_Definition
FROM INFORMATION_SCHEMA.Routines r 
Run Code Online (Sandbox Code Playgroud)


Ivo*_*Ivo 5

您可以通过以下查询选择所需的SP:

SELECT obj.Name as SPName,

modu.definition as SPDefinition,

obj.create_date as SPCreationDate

FROM sys.sql_modules modu

INNER JOIN sys.objects obj

ON modu.object_id = obj.object_id

WHERE obj.type = 'P'  AND obj.Name IN ('sp1','sp2', ect)
Run Code Online (Sandbox Code Playgroud)

另请参阅:http : //www.sqlservercurry.com/2009/03/list-all-stored-procedures-of-database.htmlhttp://www.sqlservercurry.com/2007/12/redirect-select-query -output-to-text.html