Server 2008 运行批处理文件的问题

Server 2008 运行批处理文件的问题

就我的经验而言,我似乎无法在 Server 2008 任务计划程序中运行批处理文件,尽管它没有我以前见过的常见问题。

迄今为止的问题

  • 我有一个批处理文件,它对一些存储库进行热复制备份并对其进行 ZIP 压缩。我可以手动运行它。
  • 我已经在任务计划程序中创建了一个任务来调用批处理文件(没有引号,没有命令行参数)。
  • 无论如何,任务都会返回代码 0x1(我认为这与权限有关)。

迄今为止的故障排除步骤

  • 手动运行任务。运行完美。
  • 确保我没有在参数中使用引号,因为2008 Server 修补程序错误先前在 ServerFault 上概述。我不仅没有引用论据,而且也没有论据。
  • 将输出重定向到日志文件以查看它是否正在运行。但事实并非如此。
  • 出于测试目的,将用户从系统服务帐户更改为本地管理员帐户。管理员帐户拥有所有必要的权限和特权,并且在尝试手动运行任务时当前处于登录状态。
  • 创建了另一个批处理文件,该文件不执行任何操作,只是调用另一个批处理文件来查看它是否是最初调用的批处理文件中的命令。这仍然失败,但如果手动运行,则再次有效。

我陷入了困境。有什么新想法可以启动故障排除过程吗?谢谢!

编辑1:为了澄清起见,我应该注意,我正在检查“无论用户是否登录都运行任务”,但我不记得它是否最初是这样设置的。

答案1

我有同样的问题。这是我检查过的。您的批处理文件的名称是什么?可能是 .bat 吗?尝试将其重命名为 .cmd SQL Server 代理正在运行该作业。该服务的服务帐户是否有权限?您是否使用调用语句,还是只写下批处理文件的名称?我认为您不需要调用语句(您提到过)。作业的所有者是 sa。今天这很正常。您是否有任何需要 /Q /Y 或其他语句的 net use 命令或 copy del 等?该作业无法回答任何问题,例如是否有打开的文件,您确定吗等。是否涉及 Windows 防火墙?我的问题是:我试图在作业中做多件事。不要。用一个作业重命名一件事。用另一个作业重命名另一件事。不要对每个作业执行多于一件事。我知道这听起来很愚蠢,但为了排除故障,你还是应该这样做。测试某些东西的最简单方法是 net use z:\server\share,然后查看在事件查看器和作业历史记录日志中得到的内容。保持简单,然后输入一个真正的命令。我很遗憾它不再像以前那样发挥顶级性能了。

答案2

通过以与任务设置相同的用户身份运行来排除任务故障。例如,如果您以 JoeUser 身份登录,但任务以本地管理员身份运行,则需要runas /user:administrator cmd从那里运行批处理。路径、环境变量或权限可能存在一些差异,从而导致问题。

此外,批处理程序的返回代码 0x1 只是反映了批处理程序在终止之前发出的最后一个命令的返回代码。对于某些程序,0x1 是一个错误。对于其他程序,它只是一个返回代码——请查看特定命令的文档。您可以echo %ERRORLEVEL%在批处理文件中插入命令后以跟踪进度并帮助您缩小范围。一旦您知道哪个命令返回了 1,您就可以查看该命令的文档以了解如何解决它。

在 CMD 窗口中正确运行后以您计划安排的同一用户身份运行,然后您可以继续将其作为计划任务运行。

也许您可以澄清批处理程序的本质,以帮助我们回答为什么它无法作为任务运行。

相关内容