【发布时间】:2016-09-22 03:54:26
【问题描述】:
我有一个 jar 文件,我想从 SQL 存储过程调用/运行它。为此,我使用 xp_cmdshell。
我还没有创建存储过程,但是,基本上,存储过程的内容应该是
EXEC master..xp_cmdshell 'java -jar D:\...\...\...\Test_LowerJDK.jar';
我正在尝试通过 SQL Server Management Studio 运行这一行,只是想在我创建官方存储过程之前看看它是否可以工作。但是,当我运行它时,它会给我以下消息。
无法访问 jarfile D:.........\Test_LowerJDK.jar
我不确定为什么会这样。我猜是因为我无法转到我想要的特定目录。如果是,我怎么能转到我想要的特定目录,以便我可以在该目录中运行 jar 文件。
仅供参考 我尝试从通过命令提示符保存它的目录运行我的 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) 确保 DB 用户的权限正常。 2) 确保 java 在该用户的路径中。 3)尝试将文件路径放在双引号中,例如EXEC master..xp_cmdshell 'java -jar "D:\...\...\...\Test_LowerJDK.jar"' 4) 确保是数据库服务器的本地路径;
-
另外:一次只做一个! :) 有时,如果您使用大锤,您会错过实际的解决方案
-
嗨@Nick Pfitzner!谢谢你,但1)我实际上已经在使用管理员用户。我之前使用了不同的用户,每当我使用 xp_cmdshell 时,它都会显示一条消息,说我没有权限。所以不,我已经在使用管理员帐户。对于2),我不确定您的意思。但是由于我在命令提示符下输入
java -version时java版本显示正常,所以我认为这个是可以的。对于 3),我尝试在路径中添加双引号,但它仍然给我相同的消息“无法访问 jarfile” -
@Nick Pfitzner,我能够指出问题所在。感谢您的评论!
标签: java sql-server tsql jar xp-cmdshell