1

亲爱的 Stackoverflow 用户,

我有一个 SQL 代理作业,它在 PDF 文件中生成特定报告,然后将 PDF 复制到网络目录,然后删除源目录中的 PDF 文件。

SQL 作业包括 2 个步骤: 1. 生成报告 2. 将报告复制到网络位置。

对于第 2 步,我制作了一个 bat 文件,用于处理 pdf 文件的复制和删除。

bat文件如下:

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

但是,当我运行作业时,它会挂在第二步。状态只是停留在“正在执行”。

这是我在步骤中声明的行(要执行的 bat 文件的位置):

cmd.exe /c "C:\Reports\rapport_uur_copy.bat"

我的工作设置如下:

第1步

类型:操作系统 (CmdExec) 成功时:转到下一步

On Failure:退出作业报告失败

第2步

类型:操作系统(CmdExec)

成功时:辞职报告成功

On Failure:退出作业报告失败

一些事实:

  • 我对网络目录有读/写权限
  • 我以管理员帐户(登录用户,默认)运行这些步骤
  • 第 1 步成功
  • 我运行 Windows Server 2008 R2 标准版
  • 我有 SQL Server 2008 R2
  • 当我从 cmd 手动运行脚本时,它可以工作(在管理员帐户下)。

提前致谢!

4

1 回答 1

3

当批处理脚本需要使用非本地驱动器时,例如共享它总是需要特殊权限,意味着you need to use an account to run the script which is allowed to log on as batch task in secpol- (单击开始类型 secpol.msc 并启动它 - 在 MSC 管理单元中选择“本地策略” - 选择“用户权限分配” - 右单击“作为批处理作业登录”并选择属性 - 单击“添加用户或组”,并包括相关用户。)

在正常批次中也无法使用\\drives,它们必须映射为带有字符的驱动器,例如V:\drive,这种映射got to be made by the batch itselfuser account used running the batch我在我的脚本中经历过的。

于 2013-03-26T06:53:36.083 回答