我正在寻找一种将存储过程从一个sql数据库复制到同一实例上的另一个数据库的方法。它需要是自动的,最好是通过代码(t-sql或其他任何东西)来实现,因此使用“生成脚本”技巧是不可行的(再加上我不想维护那么多脚本,人们会忘记运行它们)。
我对此进行了搜索,但没有找到可行的解决方案。有人提出了一个聪明的技巧,将所有存储过程文本生成到sql字段中,然后将其转换并在目标db上执行,但不幸的是,这有问题。
如果有可能,还有人对如何完成此工作有其他想法吗?
如果我不能以编程方式执行此操作,是否可以使用ssis快速解决方案?
谢谢。
编辑:使用sql 2005和2008版本的混合。
您可以使用SMO框架在.NET中以编程方式进行操作。
可以通过PowerShell轻松实现。
我有一个脚本可以执行此操作-它为SQL对象(包括存储的Procs)生成脚本,并在目标服务器上执行创建脚本。
当出于安全考虑不允许链接服务器,但是您需要在多个服务器之间保持某些资源同步时,这是一个方便的解决方法。
如果您只关心proc,那么检查sys.sql_modules源DB和目标DB并通过该definition视图中的字段执行目标中不存在的所有DB应该相当简单。
sys.sql_modules
definition