SQL Server 2022主节点SSIS作业失败排查求助
问题:SQL Server 2022双节点冗余部署下主节点SSIS作业执行失败
我们的SQL Server 2022采用双节点冗余部署,主节点上的UPLOAD SSIS作业执行失败,报错提示服务账户无法找到指定文件。同一域账户下,该作业在从节点可正常运行,通过Visual Studio运行也正常。已确认双节点均能通过该服务账户访问作业文件存储路径,复制正常作业脚本重建作业、将SSIS包文件复制到本地服务器后问题仍存在。
报错信息
The process could not be created for step 1 of job 0x72DB1C3372A2974DAA7D83AED24F078F (reason: The system cannot find the file specified). The step failed.
作业脚本
USE [msdb] /****** Object: Job [UPLOAD] Script Date: 4/11/2024 12:25:14 PM ******/ BEGIN TRANSACTION DECLARE @ReturnCode INT SELECT @ReturnCode = 0 /****** Object: JobCategory [[Uncategorized (Local)]] Script Date: 4/11/2024 12:25:14 PM ******/ IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1) BEGIN EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback END DECLARE @jobId BINARY(16) EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'UPLOAD', @enabled=1, @notify_level_eventlog=0, @notify_level_email=2, @notify_level_netsend=0, @notify_level_page=0, @delete_level=0, @description=N'No description available.', @category_name=N'[Uncategorized (Local)]', @owner_login_name=N'sa', @notify_email_operator_name=N'Administrator Group', @job_id = @jobId OUTPUT IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback /****** Object: Step [1step] Script Date: 4/11/2024 12:25:14 PM ******/ EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'step 1', @step_id=1, @cmdexec_success_code=0, @on_success_action=1, @on_success_step_id=0, @on_fail_action=2, @on_fail_step_id=0, @retry_attempts=0, @retry_interval=0, @os_run_priority=0, @subsystem=N'SSIS', @command=N'/FILE "\"\\[PATHTODRIVE]\jobs\ssis_job.dtsx\"" /X86 /CHECKPOINTING OFF /REPORTING E', @database_name=N'master', @flags=0 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'Update Scores', @enabled=1, @freq_type=4, @freq_interval=1, @freq_subday_type=1, @freq_subday_interval=0, @freq_relative_interval=0, @freq_recurrence_factor=0, @active_start_date=20240328, @active_end_date=99991231, @active_start_time=63000, @active_end_time=235959, @schedule_uid=N'01xxx58-4xxxb-4xxxx-861f-9dxxxx0xx1' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback COMMIT TRANSACTION GOTO EndSave QuitWithRollback: IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION EndSave: GO
排查思路
- 检查主节点SQL Server Agent服务启动账户权限:确认主节点SQL Server Agent服务的运行账户,对SSIS包存储路径、SSIS执行依赖的系统目录(如SSIS安装目录、Windows系统目录)具备读取和执行权限。即使域账户手动访问正常,Agent服务账户可能存在权限继承或组策略限制差异。
- 验证32位SSIS运行时组件:作业命令使用了
/X86参数,需确认主节点已安装对应版本的32位SSIS运行时组件。从节点和Visual Studio环境通常默认预装该组件,主节点可能遗漏安装。 - 修正作业命令路径格式:作业命令中的路径存在多余转义引号,尝试简化为
/FILE "\\[PATHTODRIVE]\jobs\ssis_job.dtsx" /X86 /CHECKPOINTING OFF /REPORTING E,避免转义导致的路径解析错误。 - 手动执行SSIS包测试:在主节点上,以SQL Server Agent服务账户身份,打开命令提示符执行
dtexec.exe /FILE "\\[PATHTODRIVE]\jobs\ssis_job.dtsx" /X86,观察具体报错信息,定位是包文件还是依赖文件缺失。 - 查看系统事件日志细节:在Windows事件查看器中,筛选SQL Server Agent、SSIS相关的错误日志,获取更详细的文件找不到的具体路径信息,可能是SSIS包依赖的其他文件(如配置文件、数据源文件)无法访问。
- 调整作业所有者权限:当前作业所有者为
sa,尝试将作业所有者改为在从节点运行正常的域账户,测试是否因所有者权限不足导致问题。
内容的提问来源于stack exchange,提问作者DJ Kiuru
相关产品推荐
相关产品推荐

