2016-09-22 68 views
0

我有一個jar文件,我想從SQL存儲過程調用/運行。爲此,我正在使用xp_cmdshell使用xp_cmdshell時無法訪問jarfile

我還沒有創建存儲過程還沒有,但基本上,存儲過程的內容是

EXEC master..xp_cmdshell 'java -jar D:\...\...\...\Test_LowerJDK.jar'; 

我試圖通SQL Server管理運行這行工作室,正好看到如果它在我創建官方存儲過程之前就會起作用。但是,當我運行它時,它會給我以下消息。

無法訪問jar文件d:......... \ Test_LowerJDK.jar

我不知道爲什麼會這樣。我猜測它是因爲我無法訪問我想要的特定目錄。如果是這樣,我怎麼能去我想要的特定目錄,以便我可以在該目錄中運行jar文件。

僅供參考 我試圖從那裏通過

java -jar Test_LowerJDK.jar 

而且我試着用C打開命令提示符保存直通命令提示符的目錄中運行我的jar文件:並做了以下

java -jar D:\...\...\...\Test_LowerJDK.jar 

兩者都很好。

而且,我試圖顯示使用使用的xp_cmdshell

EXEC master..xp_cmdshell 'dir'; 

我當前的工作目錄,好像我當前的工作目錄是C的

目錄:\ Windows \ System32下

我不想粘貼我的jar文件在C:\Windows\system32因爲我m ight搞砸了嗎?我不確定那就是我沒有這樣做的原因。

+0

需要嘗試的幾件事:1)確保DB用戶的權限正常。 2)確保java在該用戶的路徑中。 3)嘗試將文件路徑放在雙引號中,例如EXEC master..xp_cmdshell'java -jar「D:\ ... \ ... \ ... \ Test_LowerJDK.jar」'4)確保是數據庫服務器的本地路徑; –

+0

另外:一次只做一個! :)有時你會錯過實際的解決方案,如果你去大錘 –

+0

Hi @Nick Pfitzner! 謝謝你,但1)我實際上已經在使用管理員用戶。我以前使用過不同的用戶,每當我使用xp_cmdshell時,都會顯示一條消息,說我沒有權限。所以不,我已經在使用管理員帳戶。對於2),我不確定你的意思。但是,由於當我在命令提示符下鍵入'java -version'時,java版本顯示正常,我認爲這是正常的。對於3),我嘗試在路徑中放入雙引號,但仍然給了我「無法訪問jarfile」的相同消息 – Krish

回答

1

我明白了爲什麼我收到以下消息。

無法訪問jar文件d:...... \ TeamFolder \ Test_LowerJDK.jar

包含Test_LowerJDK.jar只對特定用戶組可以訪問該文件夾。我的管理員帳戶不是可訪問TeamFolder的組的一部分,因此它不能訪問該jarfile。

我試着將Test_LowerJDK.jar複製到C:\並嘗試下面的命令。

EXEC master..xp_cmdshell 'java -jar C:\Test_LowerJDK.jar'; 

它運行良好。

我之所以沒有立即想到這種情況,是因爲使用管理員帳戶,我實際上可以訪問並通過Windows資源管理器轉到TeamFolder。我忘記了TeamFolder實際上是以管理員身份登錄的計算機中的本地文件夾,這就是爲什麼我可以通過Windows資源管理器整齊訪問TeamFolder。