使用xp_cmdshell时无法访问jarfile

时间:2016-09-22 03:54:26

标签: java sql-server tsql jar xp-cmdshell

我有一个jar文件,我想从 SQL存储过程调用/运行。为此,我使用 xp_cmdshell

我还没有创建存储过程,但基本上,存储过程的内容将是

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

我正在尝试通过 SQL Server Management Studio 运行此行,以便在创建官方存储过程之前查看它是否可行。但是,当我运行它时,它会给我以下信息。

  

无法访问jarfile D:......... \ Test_LowerJDK.jar

我不确定为什么会这样。我猜它是因为我无法前往我想要的特定目录。如果是,我怎么能去我想要的特定目录,以便我可以在该目录中运行jar文件。

FYI 我尝试通过

从命令提示符保存的目录中运行我的jar文件
java -jar Test_LowerJDK.jar

此外,我尝试在C:中打开命令提示符,并执行以下操作

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

两者都很好。

另外,我尝试使用 xp_cmdshell 显示我当前的工作目录,

EXEC master..xp_cmdshell 'dir';

似乎我当前的工作目录是

  

C:\ Windows \ system32

目录

我不想将我的jar文件粘贴到C:\Windows\system32中,因为我可能搞砸了?我不确定为什么我没有这样做。

1 个答案:

答案 0 :(得分:1)

我弄明白为什么我收到以下信息。

  

无法访问jarfile D:...... \ TeamFolder \ Test_LowerJDK.jar

包含Test_LowerJDK.jar的文件夹只能由特定用户组访问。我的管理员帐户不是可以访问TeamFolder的组的一部分,因此无法访问jar文件。

我尝试将Test_LowerJDK.jar复制到C:\并尝试以下命令。

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

效果很好。

我没有立即想到这种情况的原因是因为使用管理员帐户我可以实际访问并通过Windows资源管理器转到TeamFolder。我忘记了TeamFolder实际上是我作为管理员登录的机器中的本地文件夹,这就是为什么我可以通过Windows资源管理器整齐地访问TeamFolder。