SQL Agent作业在SQL Server 2014运行正常,升级至2017后报错无法运行
SQL Agent作业sqlcmd初始化报错排查方案
核心问题根因常见方向
该错误(error 22050 + 错误码-2147467259)本质是sqlcmd运行时上下文权限不足或版本不匹配导致的初始化失败,可按以下优先级逐一排查:
排查步骤
- 确认作业步骤实际运行身份
打开作业属性→「步骤」页→双击报错步骤→「高级」选项卡,查看「运行身份」配置:- 如果配置了代理账户,作业步骤实际以代理账户而非SQL Agent服务账户运行,需验证代理账户的所有权限
- 如果是
域\机器名$格式的计算机账户,通常出现在作业调用SSIS包、cmd/PowerShell脚本、跨实例访问场景下,后续权限排查需针对该计算机账户配置
- 校验SQL实例层面权限
运行身份除了目标库的datareader权限外,还需具备以下基础权限,可通过对应T-SQL配置:USE master; -- 授予实例连接权限 GRANT CONNECT SQL TO [实际运行身份账户]; -- 授予服务器状态查看权限(sqlcmd初始化时需要读取系统元数据) GRANT VIEW SERVER STATE TO [实际运行身份账户]; -- 如果作业步骤调用了xp_cmdshell,额外授予执行权限 GRANT EXECUTE ON sys.xp_cmdshell TO [实际运行身份账户]; - 校验操作系统层面权限
sqlcmd初始化时需要读写运行身份对应的临时目录,需确认对应目录权限:- 普通用户对应临时目录:
C:\Users\<用户名>\AppData\Local\Temp,需授予读取、写入、修改权限 - 计算机账户/服务账户对应临时目录:
C:\Windows\Temp或服务配置文件下的Temp目录,需授予对应账户修改权限 - 如果作业配置了日志输出到本地文件,需额外确认运行身份对输出路径的读写权限
- 普通用户对应临时目录:
- 校验sqlcmd版本兼容性
升级到SQL Server 2017后,旧版sqlcmd可能存在兼容问题,在服务器cmd窗口执行sqlcmd -?查看版本,版本低于15.0时,重新安装SQL Server 2017对应的Native Client和命令行工具即可解决。
内容的提问来源于stack exchange,提问作者DLLLLS
相关产品推荐
相关产品推荐

