2009-06-06 38 views
2

我正在運行將數據庫備份壓縮的SQL Server代理作業。我運行的應用程序是一個C#Windows應用程序,它將數據庫的路徑作爲參數。當我運行應用程序窗體時,命令提示符一切正常。但是,當我從使用操作系統(CmdExec)作爲類型的sql服務器作業中運行它時,出現以下錯誤。SQL Server作業 - 系統找不到指定的文件

「系統找不到指定文件」

在這份工作,我有以下的命令:

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

我曾嘗試爲DatabaseBackups文件夾上的SQL Server代理帳戶設置特定的目錄權限,但仍然收到相同的錯誤。

任何人都可以拋開任何光線,因爲谷歌沒有拋出任何有用的東西,並開始讓我發瘋。

感謝

+0

哪個文件不被發現?可執行文件或數據庫備份? – 2009-06-06 18:35:52

回答

1

感謝您的幫助球員。我嘗試了你所建議的一切,發現它正在C:\ Windows \ System32文件夾中查找我用來壓縮備份的7za.exe。我曾經引用的exe文件,如果它正從我的應用程序在運行的同一目錄下名爲。

再次感謝

0

首先,請確保您的.exe是通過SQL進行居然發現。如果是這樣,接下來我要做的就是在DatabaseBackupManager.exe中放入一些邏輯來收集該線程在該文件上的ACL(例如DirectorySecurity DirSec = di.GetAccessControl(AccessControlSections.All);)。最有可能的是,SQL在啓動進程時正在修改ACL。如果是這樣,那麼你可能需要冒充該線程才能訪問該文件,或者可以找出哪個進程被授予r/w訪問權限。 %TEMP%。

1

D:驅動器必須作爲本地驅動器存在,而不是映射驅動器。 (除非有某種方式強制它被映射給其他我沒有注意到的用戶)

另外,就權限而言,它可能只是與代理相關的任何事情正在運行。

您可能需要將一些日誌記錄放入C#進程中,假設它正在啓動您的進程。如果它沒有啓動你的進程,它可能是與該目錄相關的一些權限,甚至是.NET框架設置。

另外,您可以使用Windows來審覈失敗以查看它嘗試打開哪個文件。

如果您將代理帳戶臨時添加到管理員組並且它可以正常工作,那麼這指向的權限不是非常有用的「系統找不到指定的文件」錯誤。

相關問題