2011-05-25 44 views
1

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

我已经搜索了一下,并没有找到一个可行的解决方案。有人提出了一个聪明的窍门,将所有的存储过程文本生成到一个sql字段中,然后将其转换并在目标数据库上执行它,但不幸的是有问题。

有没有人有任何其他想法如何可以做到这一点,如果它是可能的?

如果我不能以编程的方式做,它会使用ssis的快速解决方案吗?

谢谢。

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

+1

你使用过RedGate的SQL工具吗? – Jaymz 2011-05-25 11:54:12

+0

你有什么发现?不要你有程序来源/你不能直接使用它们吗?为什么你提到的巧妙技巧不起作用? – 2011-05-25 11:56:29

+0

我还没有尝试RedGate的SQL工具,即时通讯尝试保持本机,因为这是我写的数据库比较工具的最后一部分。它有我认为并且不会执行的评论的问题。 – Richy321 2011-05-25 12:02:12

回答

0

您可以在.NET中使用的SMO framework.

免费/轻松的实现可以通过PowerShell.

做我有一个脚本,不只是这个编程方式做到这一点 - 它生成SQL对象的脚本,包括Stored Procs,并在目标服务器上执行创建脚本。

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

如果你关心的只是特效,应该很简单,在源数据库和目标数据库上检查sys.sql_modules,并通过该视图中的definition字段执行目标中不存在的任何数据。

相关问题