如何将SQL Server代理作业从原服务器安全便捷迁移至新服务器
SQL Server代理作业跨实例迁移方案
最简最优操作(类复制粘贴,安全性最高)
你要的类复制粘贴的操作完全可以通过SSMS原生功能实现,全程不需要第三方工具,迁移数据100%完整:
- 打开SSMS连接源实例
SQL1,依次展开「SQL Server代理」→「作业」节点 - 按住Ctrl选中全部50个待迁移的作业,右键单击,选择「编写作业脚本为」→「CREATE到」→「新查询编辑器窗口」
- 全选生成的SQL脚本,切换到连接目标实例
SQL2的SSMS窗口执行即可,作业的调度规则、告警配置、执行步骤都会完整迁移
迁移前校验要求(避免执行报错):
- 提前同步
SQL1上作业依赖的所有登录名、数据库权限、引用的自定义存储过程/SSIS包/共享路径资源到SQL2- 如果作业步骤里有硬编码的
SQL1实例名,执行脚本前全局替换为SQL2的对应标识- 若
SQL2上已有同名作业,可先修改生成脚本里的作业名称加测试后缀,验证作业运行正常后再正式替换上线
自动化迁移场景方案
如果需要把迁移逻辑集成到自动化流程,可以直接调用msdb库的系统存储过程批量导出作业:
USE msdb GO -- 批量生成所有作业的创建脚本,输出结果直接可以在目标实例执行 DECLARE @JobName SYSNAME DECLARE JobCursor CURSOR FOR SELECT name FROM sysjobs OPEN JobCursor FETCH NEXT FROM JobCursor INTO @JobName WHILE @@FETCH_STATUS = 0 BEGIN EXEC sp_help_job @job_name = @JobName, @as_script = 1 FETCH NEXT FROM JobCursor INTO @JobName END CLOSE JobCursor DEALLOCATE JobCursor
额外安全提示:
迁移后默认作业所有者为执行脚本的账号,若需要保留原作业所有者,需提前确认对应登录名在SQL2上存在,或者修改脚本里的@owner_login_name参数为对应账号。
内容的提问来源于stack exchange,提问作者Salman81
相关产品推荐
相关产品推荐

