有没有办法将维护计划从一个SQL Server 2012复制到另一个?不能同时(在不同网络上)通过Management Studio的同一副本访问这两个服务器。
有没有办法将维护计划从一个SQL Server 2012复制到另一个?不能同时(在不同网络上)通过Management Studio的同一副本访问这两个服务器。
Answers:
转到作业所在的服务器,在Management Studio的“对象资源管理器”中,转到“管理”>“ SQL Server代理”,然后突出显示“作业”文件夹。点击F7(或查看>对象资源管理器详细信息)。您应该在右窗格中看到多个作业。突出显示要复制的内容,右键单击“脚本作业为”>“创建到”>“剪贴板”。现在连接到另一台服务器,打开一个新的查询窗口,粘贴并单击F5。比使用SSIS简化要容易得多。
您可能需要采取其他步骤,具体取决于计划的工作。连接到Integration Services实例而不是数据库实例,展开“存储的软件包”>“ MSDB”>“维护计划”,然后右键单击任何计划,然后选择“导出软件包”。在另一台服务器上,执行相同的步骤,但是右键单击“维护计划”,然后选择“导入程序包”。您将必须为每个计划执行此操作。
我找到了一种更有效的方法。
每个执行计划都是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')
信息:替换服务器名称对于维护维护计划设计器上的目标连接至关重要。
重要说明:应对记录仅复制维护计划的结构。要重新创建作业,请在完成副本后编辑每个维护计划,重置计划并保存。