`

SQL Server 2008 maintenance plan package (维护计划包) 迁移步骤

 
阅读更多
通过management studio 连接到本地的integration service, 将maintenance package 导出成文件.


用文本编辑器打开导出的包文件, 修改其中的'Server'的值为新的服务器地址, 然后保存.




将修改后的package导入到新的服务器上, 也是用management studio连接到目的服务器的integration service导入.




这样就完成了pakcage的导入.

由于package的调度一般使用SQL Agent的job, 所以,需要同时把package对应的job迁移过来.

对于job的迁移有两种办法, 一种是在目的服务器上修改package的界面中, 直接创建和源服务器上job一致的schedule,保存package后会生成一个调用package的job.

另一种就是把源服务器上的job导出, 导入到目的服务器中,并修改系统表,使之和目的服务器上的package相关联.

第一种可以用management studio的界面直接操作, 就不作介绍.

第二种方法麻烦一些, 这里只介绍一下手动的办法, 如果读者有精力,可以写成批量的脚本.

首先将源服务器上package对应的job, script out 出来, 然后在目的服务器上创建这个job.

如果这时执行job, 虽然job和package都迁移了过来, 但是执行会报以下的错误:


'The INSERT statement conflicted with the FOREIGN KEY constraint "FK_sysmaintplan_log_subplan_id". The conflict occurred in database "msdb", table "dbo.sysmaintplan_subplans", column 'subplan_id''

经过一番研究, 解决办法如下:

用文本编辑器打开package, 找到以下一段:




将其中ObjectName, DTSID和 Description的值拷贝出来. 他们就是以下语句中@subplan_name,@subplan_id,@subplan_description三个变量的值

再找到以下一段



将其中的DTSID也拷贝出来, 即是以下语句中@plan_id的值

执行以下的语句.



执行成功后, 再执行job, 就不会报上述的错误了.

其实package,就是一个xml文件, 如果读者对xml的处理比较熟悉, 可以将获得@subplan_id等的过程, 用sql语句写出来, 这样迁移就更方便了.




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics