将维护计划复制到其他服务器


Answers:


20

转到作业所在的服务器,在Management Studio的“对象资源管理器”中,转到“管理”>“ SQL Server代理”,然后突出显示“作业”文件夹。点击F7(或查看>对象资源管理器详细信息)。您应该在右窗格中看到多个作业。突出显示要复制的内容,右键单击“脚本作业为”>“创建到”>“剪贴板”。现在连接到另一台服务器,打开一个新的查询窗口,粘贴并单击F5。比使用SSIS简化要容易得多。

您可能需要采取其他步骤,具体取决于计划的工作。连接到Integration Services实例而不是数据库实例,展开“存储的软件包”>“ MSDB”>“维护计划”,然后右键单击任何计划,然后选择“导出软件包”。在另一台服务器上,执行相同的步骤,但是右键单击“维护计划”,然后选择“导入程序包”。您将必须为每个计划执行此操作。


11

我找到了一种更有效的方法。

每个执行计划都是msdb.sysssispackages表中的一个记录。

您可以将记录从msdb.sysssispackages源服务器表复制到msdb.sysssispackages目标服务器表。

只需在源服务器上创建链接服务器,然后在源服务器上使用此插入:

INSERT INTO 
    YOUR-DEST-SERVER-NAME.msdb.dbo.sysssispackages
SELECT        
    name, 
    id, 
    description, 
    createdate, 
    folderid, 
    ownersid, 
    cast(
        cast(
            replace(
                cast(
                    CAST(packagedata AS VARBINARY(MAX)) AS varchar(max)
                ), 
            'YOUR-SOURCE-SERVER-NAME', 'YOUR-DEST-SERVER-NAME') 
        as XML) 
    as VARBINARY(MAX)) as packagedata, 
    packageformat, 
    packagetype, 
    vermajor, 
    verminor, 
    verbuild, 
    vercomments, 
    verid, 
    isencrypted, 
    readrolesid, 
    writerolesid

FROM
    msdb.dbo.sysssispackages AS sysssispackages_1
WHERE        
    (name = 'YourMaintenancePlanName')

信息:替换服务器名称对于维护维护计划设计器上的目标连接至关重要。

重要说明:应对记录仅复制维护计划的结构。要重新创建作业,请在完成副本后编辑每个维护计划,重置计划并保存。


1
建议在replace('ab \','yz \')中使用尾部反斜杠,以避免替换数据的其他部分。
crokusek

-2
  1. 登录为“ sa”,否则将不会显示。

  2. 快速查看:

在此处输入图片说明


OP正在询问与工作分开的维护计划,这些维护计划无法以您可以使用的方式生成创建脚本。
约旦
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.