【问题标题】:How can I download all stored procedures from a specific database如何从特定数据库下载所有存储过程
【发布时间】:2011-11-16 06:06:40
【问题描述】:

我必须从特定数据库下载所有存储过程。

大约有 130 个存储过程,我可以手动完成,就像每个都保存为文件一样。

但是有没有自动下载全部的选项?

【问题讨论】:

    标签: sql sql-server stored-procedures


    【解决方案1】:

    1) 打开 SQL Server Management Studio 2) 在对象资源管理器中选择您的数据库 3)右键单击>任务>生成脚本

    4) 只选择要编写脚本的存储过程

    5) 按照向导完成步骤;在下一个屏幕上,选择选项 Single file per object 并定义放置这些文件的目录:

    使用这些选项,您将获得每个存储过程一个文件,存储在您选择的目录中。

    【讨论】:

    • 嘿,我希望每个 SP 有 130 个单独的文件 :( 它只给我一个文件
    • @ashuthinks:无论你喜欢他们在哪里!逐步完成向导 - 它会询问您是要为所有存储过程创建一个文件,还是每个存储过程一个文件,它会询问您将这些文件存储在哪里...
    • @ashuthinks:看我的第三张截图——这就是你要找的吗??? 每个对象一个文件 ??
    【解决方案2】:

    您可以在 Management Studio 中执行此操作 - 右键单击​​所需的数据库并选择任务 -> 生成脚本 -> 完成向导。然后,您可以只指定存储过程等。

    你也可以使用这样的脚本:

    SET NOCOUNT ON
    DECLARE @Test TABLE (Id INT IDENTITY(1,1), Code VARCHAR(MAX))
    
    INSERT INTO @Test (Code)
    SELECT 'IF object_ID(N''[' + schema_name(schema_id) + '].[' + Name + ']'') IS NOT NULL
              DROP PROCEDURE ['+ schema_name(schema_id) +' ].[' + Name + ']' + CHAR(13) + CHAR(10) + 'GO' + CHAR(13) +CHAR(10) +
               OBJECT_DEFINITION(OBJECT_ID) + CHAR(13) +CHAR(10) + 'GO' + CHAR(13) + CHAR(10)
                FROM sys.procedures
                WHERE is_ms_shipped = 0
    
    DECLARE @lnCurrent INT, @lnMax INT
    DECLARE @LongName VARCHAR(MAX)
    
    SELECT @lnMax = MAX(Id) FROM @Test
    SET @lnCurrent = 1
    WHILE @lnCurrent <= @lnMax
          BEGIN
                SELECT @LongName = Code FROM @Test WHERE Id = @lnCurrent
                WHILE @LongName <> ''
                   BEGIN
                       PRINT LEFT(@LongName,8000)
                       SET @LongName = SUBSTRING(@LongName, 8001, LEN(@LongName))
                   END
                SET @lnCurrent = @lnCurrent + 1
          END
    

    您也可以按住 shift+单击来选择所有存储过程,然后您可以右键单击并将它们写入文件。

    【讨论】:

      【解决方案3】:

      您也可以使用 DB pro(用于数据库的 Visual Studio 工具)来执行此操作。 欲了解更多信息,请查看 - https://www.mssqltips.com/sqlservertip/2971/creating-a-visual-studio-database-project-for-an-existing-sql-server-database/

      编辑:更新了陈旧的链接。

      【讨论】:

      • 不幸的是,该链接现已失效。正是出于这个原因,不鼓励仅链接的答案。如果对答案进行了编辑以包含一些内容,则可以保存。
      猜你喜欢
      • 2019-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 2010-12-20
      • 2018-06-26
      • 2019-03-10
      • 2014-08-14
      相关资源
      最近更新 更多