【问题标题】:Copy SQL Stored Procedures between DataSources/Schemas?在数据源/模式之间复制 SQL 存储过程?
【发布时间】:2009-07-06 03:24:17
【问题描述】:

我已经在我们的开发模式中创建了 SQL 存储过程并且它工作正常。现在我们的任务是将我们的开发代码转移到生产代码中。如何将这些存储过程从一个模式复制到另一个模式?我是否需要在目标模式上重新编译整个过程?或者有没有办法在目标模式上注册这些程序?有人可以建议我一种更好的方法来复制存储过程吗?

我已经通过 iSeries Navigator for Windows Version 5 Release 4 创建了过程。

提前致谢, 苏雷什

【问题讨论】:

    标签: stored-procedures schema datasource ibm-midrange


    【解决方案1】:

    用于创建存储过程的 SQL 应该在源文件中,作为某些源代码控制系统(CVS、SVN 等)中项目的一部分。

    要将您的项目“部署”到新服务器(开发、QA 或生产),只需在新服务器/数据库上执行这些“源 SQL”文件即可。

    确实,对数据库的任何更改(更改表列、添加新表)都应该在源代码管理的 SQL 文件中,并以相同的方式应用。

    虽然数据库开发工具并不总是让它看起来像 - SQL 也是源代码。 :-)

    【讨论】:

    • 是的,你是对的。但是如何在不使用外部数据库开发工具的情况下通过 iSeries 命令注册/执行这些程序来生产方案?即没有物理执行所有 sql 文件。只需将其作为合格的存储过程转移到 prod 模式。
    • 我把创建表、索引等的SQL放到了源类型为SQL的普通源文件中。然后我将当前库更改为生产数据库或其他库,并使用 RUNSQLSTM 命令运行 SQL。您可以轻松地将其添加到 PDM... 我使用 RS 作为选项,使用“RUNSQLSTM SRCFILE(&L/&F) SRCMBR(&N) COMMIT(*NONE)”作为命令。如果需要,您可以同时针对所有内容运行它。
    • 是的,在一个完美的世界中应该如此。但是,如果您有一个头脑简单的项目经理,他只是在这里和那里创建这些并且没有留下任何源代码,那么最好有一种相当自动化的方式将它们复制到一个新的数据库中。
    【解决方案2】:

    一般来说,不需要原始来源。打开 iSeries Navigator 并通过 Databases 向下钻取到包含开发 SP 的模式。选择所有你想要的,右键单击并选择“生成 SQL”。选择在“RunSQL Scripts”中打开(并可选择包含 DROP 语句)。

    这将在一个地方为您提供所有选定 SP 的脚本。这可以存储在您选择的任何地方。此外,如果需要在脚本中更改任何架构名称,您可以使用 Edit-> Replace。

    然后您可以使用菜单选项 Connection-> Use Temporary JDBC Settings... 指向新架构。最后,单击工具栏上的 Run All 图标,将脚本中的 SP 生成到您的新架构中。

    简而言之,在 iNav 'Run SQL Scripts' 中选择您想要的那些,指向新架构并在本质上在一个操作中创建它们。

    【讨论】:

      【解决方案3】:
      【解决方案4】:

      我发现的(到目前为止)最好的方法是使用 SQL Management Studio,并使用 Script Procedure As ... 菜单选项。这将为您的存储过程生成 SQL 源代码(CREATE/ALTER 取决于您使用的菜单选项)

      如果您需要批量复制所有存储过程/用户定义的函数,请使用任务->生成脚本菜单选项。在生成的一系列对话框中,您可以选择为其生成脚本的存储过程/函数,然后在您的新数据库上运行这些脚本。

      【讨论】:

        猜你喜欢
        • 2018-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多