尊敬的Stackoverflow用户,如何在SQL Agent作业中成功运行批处理文件?
我有一个SQL代理作业,它生成PDF文件中的特定报告,然后将PDF复制到网络目录,然后删除源文件夹中的PDF文件。
SQL作业包含2个步骤: 1.生成报告 2.将报告复制到网络位置。
对于步骤2 I由蝙蝠文件,该文件处理的复制和去除pdf文件的。
蝙蝠文件如下:
set source_dir=C:\Reports\Energie\Uur
set dest_dir=\\KWS2-WEB-SERVER\Share\Reports\Uur
C:\Windows\System32\Robocopy.exe %source_dir% %dest_dir% /MOV /Z
然而,当我跑我的工作,它挂在第二个步骤。状态只停留在“正在执行”。
这是我在工序(蝙蝠文件来执行的位置)规定的线:
cmd.exe /c "C:\Reports\rapport_uur_copy.bat"
我的作业的设置如下:
步骤1
类型:操作系统(CmdExec) 在成功:转到下一步
在失败:退出作业报告失败
步骤2
类型:操作系统(CmdExec)
在成功:退出作业报告成功
在失败:退出工作报告失败
某些事实:
- 我已经在网络上目录的读/写权限
- 我运行的步骤为管理员帐户(登录的用户,默认)
- 第1步成功
- 我运行Windows Server 2008 R2标准
- 我有SQL Server 2008 R2
- 当我从cmd手动运行脚本时,它可以工作(在管理员帐户下)。
在此先感谢!
当一个批处理脚本需要使用的驱动器不是本地的,例如,股吧总是需要特殊的权利,
当您直接运行批处理文件时会发生什么?它会提示你正确吗?您需要制定正确的开关以停止提示。 SQL Agent无法正常工作的另一个原因是,它运行的帐户与您的帐户不同。例如,即使可以,默认情况下SQL代理帐户也不能访问任何网络驱动器。 – 2013-03-04 09:09:27
@ElectricLlama当我直接运行批处理脚本(即双击文件)时,不会出现提示。它只是运行。我以管理员身份运行脚本。我创建了一个名为“asAdminProxy”的代理,其中定义了管理员凭证。 – Nazeem 2013-03-12 08:21:22
对不起,我看到你已经尝试手动运行它。当作业挂起时,您是否可以打开任务管理器并检查您的CMD过程是否在预期的凭据下?您可以尝试添加/ Log:参数来记录操作(无论如何,这是一个好主意)。只要确保您登录到一定能够访问的文件。您也可以使用/ v作为详细信息。您也可以使用'“C:\ Reports \ rapport_uur_copy.bat”>> C:\ Log.TXT'将您的批处理文件记录到另一个日志中。 – 2013-03-12 23:00:28