Sql server 2008 如何在SQL代理作业中成功运行批处理文件?

Sql server 2008 如何在SQL代理作业中成功运行批处理文件?,sql-server-2008,batch-file,jobs,sql-agent,Sql Server 2008,Batch File,Jobs,Sql Agent,亲爱的Stackoverflow用户: 我有一个SQL代理作业,它生成PDF文件中的特定报告,然后将PDF复制到网络目录,然后删除源目录中的PDF文件 SQL作业包括两个步骤: 1.生成报告 2.将报告复制到网络位置 对于步骤2,我制作了一个bat文件,用于处理pdf文件的复制和删除 bat文件如下所示: set source_dir=C:\Reports\Energie\Uur set dest_dir=\\KWS2-WEB-SERVER\Share\Reports\Uur C:\Windo

亲爱的Stackoverflow用户:

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

SQL作业包括两个步骤: 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文件的位置)中所述的行:

我的工作设置如下:

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
步骤1

类型:操作系统(CmdExec) 关于成功:进入下一步

失败时:退出报告失败的作业

步骤2

类型:操作系统(CmdExec)

关于成功:退出报告成功的工作

失败时:退出报告失败的作业

一些事实:

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

提前谢谢

当批处理脚本需要使用非本地驱动器(例如共享)时,它总是需要特殊权限,这意味着
您需要使用一个帐户来运行允许作为批处理任务登录到secpol中的脚本(单击开始类型secpol.msc并启动它-在msc管理单元中选择“本地策略”-选择“用户权限分配”-右键单击“作为批处理作业登录”并选择属性-单击“添加用户或组”,并包括相关用户。)


同样,在正常批处理中,不可能使用
\\drives
,它们必须映射为带有字符的驱动器,例如
V:\drive
,并且该映射
必须由批处理本身进行
,使用运行批处理的
用户帐户
我在我的一个脚本中体验到了这一点。

运行batc时会发生什么直接使用h文件?它会提示您,对吗?您需要找到正确的开关来停止提示。SQL代理无法正常工作的另一个原因是,它运行的帐户与您的帐户不同。例如,默认情况下,SQL代理帐户无法访问任何网络驱动器,即使您可以访问。当我运行ba时,@ElectricLlamatch脚本直接(即双击文件)没有出现提示。它只是运行。我以管理员身份运行脚本。我创建了一个名为“asAdminProxy”的代理定义管理员凭据的位置。抱歉,我看到您已尝试手动运行它。当作业挂起时,能否打开任务管理器并检查CMD进程是否在预期凭据下?您可以尝试将/Log:参数添加到日志操作中(无论如何,这是一个好主意)。只要确保您登录到一个您肯定有权访问的文件。您还可以使用/v表示详细信息。您也可以使用
“C:\Reports\rapport\u uur\u copy.bat”>>C:\Log.TXT
将批处理文件记录到另一个日志中。@Naz33m不再感兴趣了?