【问题标题】:SQL: programmatically copy stored procedures from one db to anotherSQL:以编程方式将存储过程从一个数据库复制到另一个数据库
【发布时间】:2011-09-01 17:08:55
【问题描述】:

我正在寻找一种将存储过程从一个 sql 数据库复制到同一实例上的另一个数据库的方法。它需要是自动的,最好是通过代码(t-sql 或任何东西),所以使用生成脚本技巧是不可行的(另外我不想维护那么多脚本,人们忘记运行它们)。

我对此进行了一些搜索,但没有找到可行的解决方案。有人提出了一个巧妙的技巧,将所有存储过程文本生成到 sql 字段中,然后将其转换并在目标数据库上执行,但不幸的是出现了问题。

如果可能的话,是否有人对如何做到这一点有任何其他想法?

如果我不能以编程方式完成,是否有使用 ssis 的快速解决方案?

谢谢。

编辑:混合使用 sql 2005 和 2008 版本。

【问题讨论】:

  • 你用过RedGate的SQL工具吗?
  • 你发现了什么?你没有程序源/你不能直接使用它们吗?为什么你提到的聪明技巧不起作用?
  • 我还没有尝试过 RedGate 的 SQL 工具,我试图让它保持原生,因为这是我正在编写的数据库比较工具的最后一部分。我认为它与 cmets 存在问题并且不会执行。
  • 了解您使用的 SQL Server 版本也很有帮助。

标签: sql sql-server stored-procedures


【解决方案1】:

您可以在 .NET 中使用 SMO framework. 以编程方式完成此操作

可以通过PowerShell.实现免费/简单的实现

我有一个执行此操作的脚本 - 它为 SQL 对象(包括存储过程)生成脚本,并在目标服务器上执行创建脚本。

当安全问题不允许链接服务器但您需要在多个服务器之间保持某些资源同步时,这是一种方便的解决方法。

如果您只关心 proc,那么在源和目标 DB 上检查 sys.sql_modules 并通过该视图中的 definition 字段执行目标中不存在的任何内容应该是相当简单的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-29
    • 2017-03-15
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 2016-01-26
    相关资源
    最近更新 更多