You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过主服务器SQL Server作业连接辅助服务器执行脚本?

解决SQL Server Agent作业跨服务器执行脚本的方案

两种可靠实现方案

方案一:使用CmdExec步骤调用sqlcmd

这是规避SQLCMD模式兼容性问题的稳定方案:

  • 作业步骤类型选择:新建作业步骤时,类型选「操作系统(CmdExec)」
  • 编写执行命令:
    sqlcmd -S <辅助服务器名/实例名> -U <SQL登录名> -P <登录密码> -i "D:\Scripts\辅助服务器脚本.sql" -b
    
    关键说明:
    • -b 参数:脚本执行失败时返回错误码,让Agent能识别步骤失败
    • 脚本路径需用辅助服务器本地绝对路径,或主服务器可访问的共享路径(如\\主服务器\共享目录\辅助脚本.sql)
    • 优先用SQL Server身份验证,避免Windows身份验证的跨域权限问题

方案二:使用链接服务器+EXEC AT

无需依赖外部脚本文件,直接通过T-SQL跨服务器执行:

  1. 在主服务器创建链接服务器:
    EXEC sp_addlinkedserver 
      @server = N'辅助服务器实例名',
      @srvproduct=N'SQL Server';
    
    EXEC sp_addlinkedsrvlogin 
      @rmtsrvname=N'辅助服务器实例名',
      @useself=N'False',
      @locallogin=NULL,
      @rmtuser=N'SQL登录名',
      @rmtpassword=N'登录密码';
    
  2. 作业步骤类型选「Transact-SQL(T-SQL)」,执行代码:
    EXEC ('
        -- 这里写入辅助服务器需执行的脚本内容
        ALTER DATABASE [目标数据库] SET RECOVERY FULL;
        BACKUP DATABASE [目标数据库] TO DISK = ''D:\Backups\FullBackup.bak'';
    ') AT [辅助服务器实例名];
    
    注意:链接服务器的登录账号需拥有辅助服务器上操作的足够权限

避坑要点

  • 放弃使用:Connect命令:它是SQLCMD专属命令,Agent的T-SQL步骤不支持;之前调用sqlcmd卡住多为权限/网络问题,检查防火墙、SQL Server远程连接设置
  • 若用共享路径存脚本,需确保Agent服务账号有访问共享的权限
  • 执行收缩、恢复模式切换前,需确认辅助服务器上的数据库处于可操作状态(如先退出AlwaysOn可用性组)

内容的提问来源于stack exchange,提问作者LYNITS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 18:22:38