本文提供了一个解决方案来修复运行大量计划任务时发生的错误0x80041323。
适用于:
Windows 7 Service Pack 1,Windows Server 2012 R2
原始 KB 编号:
2696472
请考虑以下方案:
你有一台 Windows 计算机,该计算机在一个用户帐户下运行大量计划任务。
任务断断续续地失败,在“LastRun”选项下,你可能会看到以下错误消息
任务计划程序服务太忙0x80041323
在任务计划程序操作日志下,可能会看到记录的以下事件:
日志名称:Microsoft-Windows-TaskScheduler/Operational
来源:Microsoft-Windows-TaskScheduler
事件 ID:706
任务类别:兼容性模块任务状态更新失败
说明:任务兼容性模块无法将任务“<task.job>”更新为所需的状态 0。 其他数据:错误值:2147942405。
此错误进一步意味着:
对于十进制 -2147216605/十六进制0x80041323 SCHED_E_SERVICE_TOO_BUSY
任务计划程序服务太忙,无法处理
此外,如果超过任务队列配额或引擎配额,则可能还会注意到任务计划程序操作日志中记录的以下事件:
如果超过任务队列配额:
事件 ID 131
说明:任务计划程序无法启动任务“<Task_Name>”;因为任务队列中超过当前配置为 <Task_Queue_Limit>的配额的任务数。
用户操作:减少正在运行的任务数或增加配置的队列配额。
事件 ID 132
说明:任务计划程序任务启动队列配额正在接近其当前配置 <为Task_Limit>的任务的预设限制。
用户操作:减少正在运行的任务数或增加配置的队列配额。
如果引擎配额超出:
事件 ID 133
说明:任务计划程序无法在 TaskEngine <Engine_Name中为用户<User_Name>>启动任务<Task_Name>。
用户操作:减少在指定用户上下文中运行的数字任务。
事件 ID 134
说明:用户<User_Name>的任务引擎<Engine_Name>正在接近其任务的预设限制。
用户操作:减少正在运行的任务数或增加配置的队列配额。
事件 ID 132 和事件 ID 134 只是问题即将出现的指示器,而不是问题本身。 此问题可能在这些事件之后发生,也可能不发生。
根据代码
SCHED_E_SERVICE_TOO_BUSY
,当队列已满时将记录此信息。 如果有以下情况,则会出现上述问题:
超过任务队列配额。
超出引擎配额。
若要解决此特定问题,请将配额键的值增加到最大值。
本部分包含说明如何修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,请务必严格按照这些步骤操作。 为了加强保护,应先备份注册表,再进行修改。 如果出现问题,可以还原注册表。
单击
“开始”
,键
入 regedit
,然后按 Enter。
找到并单击以下注册表项:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Schedule\Configuration
右键单击
TasksInMemoryQueue
,单击
“编辑
”,然后单击
“修改
”。
在
“值”数据
框中,键入
1000
(小数) 。
右键单击
TasksPerHighestPrivEngine
,单击
“编辑
”,然后单击“
修改
”。
在
“值”数据
框中,键入
1000
(小数) 。
右键单击
TasksPerLeastPrivEngine
,单击
“编辑
”,然后单击“
修改
”。
在
“值”数据
框中,键入
1000
(小数) 。
退出
注册表编辑器
并重新启动计算机。
作业队列配额通过“TasksInMemoryQueue”值进行控制,而引擎配额通过位于以下注册表项下的“TasksPerHighestPrivEngine”和“TasksPerLeastPrivEngine”注册表值进行控制:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Schedule\Configuration
TasksInMemoryQueue [Default = 75, Max = 1000]
-
确定允许在会话管理器中排队的最大任务数。 超出此限制后,计划执行的任何新任务实例都将被放弃,你将获得事件 ID 131。
-
此队列由所有任务共享。
-
TasksPerHighestPrivEngine [Default = 100, Max = 1000]
-
确定“提升”任务引擎 (taskeng.exe) 在任何给定时间点允许处于运行状态的最大任务实例数。
-
每个用户会话 (存在一个任务引擎,例如 SYSTEM、LOCAL SERVICE、Administrator、USER1、USER2 等)
-
此处的“提升”对应于选择“使用最高特权运行”选项的任务。
-
TasksPerLeastPrivEngine [Default = 50, Max = 1000]