2013-02-25 62 views
1

尊敬的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手动运行脚本时,它可以工作(在管理员帐户下)。

在此先感谢!

当一个批处理脚本需要使用的驱动器不是本地的,例如,股吧总是需要特殊的权利,
+0

当您直接运行批处理文件时会发生什么?它会提示你正确吗?您需要制定正确的开关以停止提示。 SQL Agent无法正常工作的另一个原因是,它运行的帐户与您的帐户不同。例如,即使可以,默认情况下SQL代理帐户也不能访问任何网络驱动器。 – 2013-03-04 09:09:27

+0

@ElectricLlama当​​我直接运行批处理脚本(即双击文件)时,不会出现提示。它只是运行。我以管理员身份运行脚本。我创建了一个名为“asAdminProxy”的代理,其中定义了管理员凭证。 – Nazeem 2013-03-12 08:21:22

+0

对不起,我看到你已经尝试手动运行它。当作业挂起时,您是否可以打开任务管理器并检查您的CMD过程是否在预期的凭据下?您可以尝试添加/ Log:参数来记录操作(无论如何,这是一个好主意)。只要确保您登录到一定能够访问的文件。您也可以使用/ v作为详细信息。您也可以使用'“C:\ Reports \ rapport_uur_copy.bat”>> C:\ Log.TXT'将您的批处理文件记录到另一个日志中。 – 2013-03-12 23:00:28

回答

3

意味着you need to use an account to run the script which is allowed to log on as batch task in secpol - (点击启动类型secpol。选择“用户权限分配” - 右键单击​​“作为批处理作业登录”,然后选择属性 - 单击“添加用户或组”,并包括相关用户。 )

同样在正常批次中,不可能使用\\drives,它们必须映射为带有字符的驱动器,例如V:\drive和这个映射got to be made by the batch itselfuser account used running the batch我在一个脚本中经历了这个。

+1

@ Naz33m不再有兴趣? – peet 2013-11-23 20:06:34

相关问题