2016-09-22 70 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。