Sql server SQL Server作业-系统找不到指定的文件

Sql server SQL Server作业-系统找不到指定的文件,sql-server,sql-server-agent,Sql Server,Sql Server Agent,我正在运行一个SQL Server代理作业,它可以压缩我的数据库备份。我运行的应用程序是一个C#Windows应用程序,它将数据库路径作为参数。当我运行应用程序表单时,命令提示符都能正常工作。但是,当我在sql server作业中使用操作系统(CmdExec)作为类型运行它时,我得到以下错误 “系统找不到指定的文件” 在作业中,我有以下命令: D:\DatabaseBackups\DatabaseBackupManager.exe D:\DatabaseBackups\SubDit\Databa

我正在运行一个SQL Server代理作业,它可以压缩我的数据库备份。我运行的应用程序是一个C#Windows应用程序,它将数据库路径作为参数。当我运行应用程序表单时,命令提示符都能正常工作。但是,当我在sql server作业中使用操作系统(CmdExec)作为类型运行它时,我得到以下错误

“系统找不到指定的文件”

在作业中,我有以下命令:

D:\DatabaseBackups\DatabaseBackupManager.exe D:\DatabaseBackups\SubDit\Database.bak

我已尝试在DatabaseBackup文件夹上为SQL Server代理帐户设置特定的目录权限,但仍然收到相同的错误

有谁能解释一下这一点,因为谷歌并没有抛出任何有用的东西,而且已经开始让我发疯了


谢谢

首先,请确保SQL确实找到了您的.exe。如果是这样,接下来我要做的就是在DatabaseBackupManager.exe中加入一些逻辑,以收集线程在该文件上的ACL(例如DirectorySecurity DirSec=di.GetAccessControl(AccessControlSections.All);)。最有可能的是,SQL在启动进程时正在修剪ACL。如果是这样,那么您可能需要模拟该线程以访问该文件,或者,找出该进程被授予r/w访问权限的位置,例如%temp%。

D:驱动器必须作为本地驱动器而不是映射驱动器存在。(除非有某种方法可以强制为我不知道的其他未登录用户映射)

此外,就权限而言,它可以是与代理运行的帐户相关的任何内容

假设C#进程正在启动您的进程,您可能需要将一些日志记录到C#进程中。如果它没有启动您的进程,则可能是该帐户上与目录甚至.NET framework设置相关的某些权限

此外,您还可以使用Windows审核故障,以查看它试图打开的文件


如果您将代理帐户临时添加到administrators组,并且该帐户正常工作,则这表明权限是导致“系统找不到指定的文件”错误的原因。谢谢您的帮助。我尝试了您建议的一切,发现它正在C:\Windows\System32文件夹中查找我用来压缩备份的7za.exe。我引用了exe,就好像它是从运行我的应用程序的同一目录中调用的一样


再次感谢

找不到哪个文件?是可执行文件,还是数据库备份?