2013-06-22 35 views
1

我正嘗試使用xp_cmdshell在SQL Server 2008 Express中執行批處理文件。如果我用它來執行包含以下命令的批處理文件:使用xp_cmdshell執行批處理文件以創建測試文件 - differentt結果

呼應> C:\研發\測試\ itworks.txt

一個名爲「itworks.txt」創建和裏面的文字說: 「ECHO已開啓」。 但是,如果我運行包含命令的批處理文件:

CD。 > test1.txt的

它不工作(沒有錯誤,只是沒有創建) 也不認爲:

類型NUL>的test2.txt

雖然這兩個批處理文件做創建該文件從命令提示符雙擊/運行。我認爲這可能是一個權限錯誤(我沒有在那一刻嘗試echo命令),所以更改了文件權限,以便NTAuthority(這是SQLServer服務的運行方式)完全控制該文件夾,但它仍然沒有「工作。事件日誌中沒有。我是DOS命令的新手,所以我不太瞭解不同的命令。有誰知道可能會發生什麼?

回答

2

如果您直接在命令提示符處測試命令,它們將工作。 cd語句產生一個包含當前目錄名稱的文本文件; type語句產生一個零字節文件,但它確實產生了一個文件。

最有可能的是,xp_cmdshell正在其所運行的帳戶沒有寫入權限的文件夾中執行,並且您沒有爲要寫入的文件指定其他位置。 (該echo聲明工程指定文本文件的文件夾位置,而那另兩個則沒有。)

您的批處理文件更改爲:

cd > C:\development\test\test1.txt 

type NUL > C:\development\test\test1.txt 

如果當通過xp_cmdshell運行時,echo聲明在那裏工作,您知道它可以通過NTAuthority帳戶進行寫入。

+0

Doh!我應該注意到,那些有效的指令有完整的路徑,已經很晚了,而且我很累。謝謝。 – Nix