如何通过SQL Server代理从计划的作业中运行批处理文件


12

我正在尝试从SQL Server 2008 R2下的SQL Server代理作业中运行(Windows)批处理文件。在“作业步骤”中,我创建了一个新步骤,将其类型设置为“操作系统(CmdExec)”。我最初尝试仅将批处理文件名放在“命令”字段中。出现错误,它找不到文件。

然后我尝试了:cmd.exe c:\ test.bat

这开始了,但是从来没有完成(而且看起来它实际上并没有在工作)。

我尝试将批处理文件名括在引号中:cmd.exe“ C:\ test.bat”,但这也没有任何区别。

使它起作用的神奇组合是什么?


出现“找不到文件”错误时,您是否使用完整路径?路径在执行服务器上有效,而不仅在工作站上有效吗?批处理文件中的路径是绝对路径吗?
所有行业的乔恩

是的,我正在使用完整路径。这是运行它的服务器上的正确路径。批处理文件不过是一个简单的测试:echo> C:\ temp \ itworks.txt
Paul Mrozowski 2011年

Answers:


11

如果记忆正确地为我服务:

cmd.exe /c "c:\test.bat"

如果路径或文件名中有空格,则需要使用引号


1

还要检查用于作业代理服务的权限。可能是运行该服务的用户没有查看该文件的权限。

祝好运


0

检查您是否具有在该驱动器和文件夹位置上运行批处理文件的权限。

不要忘记手动运行时会使用凭据,但是当SQL Agent自动运行凭据时,会使用代理的凭据和权限。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.