使用 xp_cmdshell 时无法访问 jarfile

Unable to access jarfile when using xp_cmdshell

我有一个 jar 文件,我想从 SQL 存储过程 call/run。为此,我使用 xp_cmdshell.

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

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

我正在尝试 运行 通过 SQL Server Management Studio 这一行,只是想在我创建官方存储过程之前看看它是否有效.但是,当我 运行 它时,它会给我以下消息。

Unable to access 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';

而且我当前的工作目录似乎是

Directory of C:\Windows\system32

我不想将我的 jar 文件粘贴到 C:\Windows\system32 中,因为我可能会把事情搞砸?我不确定这就是我没有这样做的原因。

我明白了为什么我会收到以下消息。

Unable to access jarfile 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 Explorer 整齐地访问 TeamFolder 的原因。