sql - 通过SQL脚本导出存储过程

标签 sql sql-server-2005 stored-procedures backup ssms

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

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

现在,我正在使用“数据库”->“任务”->“生成脚本”选项,这将带我完成一系列对话框,从中可以选择要导出的SP。我想简化此过程,所以我不必一遍又一遍。

注意:“导出”是指仅将其打印在屏幕上,以便可以将其复制并保存在文本文件中。

最佳答案

如何使用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

编辑

听起来您可能希望像这样在结果集中包含LAST_ALTERED日期和定义。
SELECT
    r.LAST_ALTERED,
    r.ROUTINE_NAME,
    r.Routine_Definition
FROM INFORMATION_SCHEMA.Routines r 

关于sql - 通过SQL脚本导出存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6817199/

相关文章:

oracle - PL/SQL过程错误

mysql - 在数据库中使用 1 位代码 VS ENUM 的描述性字符串?

mysql - 仅对一列使用 WHERE 子句

sql-server - SQL Server-如何将 'ALTER INDEX'与变量一起用作参数

SQL Server 2005 日期比较 - 排序规则问题

mysql - 创建 MySQL 存储过程时出现错误 1604。 MySQL 版本 5.7.19

mysql - 如何在 MySQL 程序中创建唯一的临时表?

mysql - ALTER TABLE 时 SQL 键列不存在

mysql - 如何从表中只选择双重匹配的记录?

sql-server-2008 - 支持 ASP.NET\C# 项目上的多个程序集