2016-09-22 26 views
0

SQLストアドプロシージャから呼び出して実行するjarファイルがあります。これを行うには、xp_cmdshellを使用しています。xp_cmdshellを使用しているときにjarfileにアクセスできません

私はただ見て、SQL Server Management Studioをスルーこの行を実行しようとしています、私はまだストアドプロシージャを作成していないが、基本的には、ストアドプロシージャの内容は

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

だろう私が公式のストアドプロシージャを作成する前にそれが動作するかどうか。しかし、私はそれを実行すると、それは私に次のメッセージを与えます。

jarファイルをDにアクセスすることができません:......... \ Test_LowerJDK.jar

をなぜこれが起こっている私にはわかりません。私は私が望む特定のディレクトリに行くことができなかったので、私はそれを推測しています。そうであれば、そのディレクトリにあるjarファイルを実行できるように、どのようにして特定のディレクトリに移動できますか?

FYI 私はまた、私はCで、コマンドプロンプトを開いてみました、それが

java -jar Test_LowerJDK.jar 

により、コマンドプロンプトを通して保存されているディレクトリから、私のjarファイルを実行してみました:と

java -jar D:\...\...\...\Test_LowerJDK.jar 
を次のようでした

どちらもうまく動作します。

また、私はを使用してをのxp_cmdshell使用して、私の現在の作業ディレクトリ、

EXEC master..xp_cmdshell 'dir'; 

を表示しようと、それは私の現在の作業ディレクトリのように思えるCの

ディレクトリがある:\ WINDOWS \ system32に

私はjarファイルをC:\Windows\system32に貼り付けたくありませんでした。 ight mess things things up?それが私がそれをしなかった理由なのかどうかはわかりません。

+0

試してみるべきこと:1)DBユーザーの権限が正しいことを確認してください。 2)Javaがそのユーザーのパスにあることを確認します。 3)ファイルパスを二重引用符で囲みます。 EXEC master..xp_cmdshell 'java -jar "D:¥...¥...¥...¥Test_LowerJDK.jar"' 4)データベースサーバーへのローカルパスであることを確認します。 –

+0

また、一度にそれらのうちの1つだけを実行してください! :)時々、あなたは本当の解決策を見逃してしまいます。 –

+0

こんにちは@Nick Pfitzner! ありがとうございますが、1)実際に管理者ユーザーを使用しています。以前は別のユーザーを使用していましたが、xp_cmdshellを使用するたびに、私にはアクセス許可がないというメッセージが表示されます。だから、私は既に管理者アカウントを使用しています。 2)については、あなたが何を意味するのか分かりません。しかし、javaのバージョンはコマンドプロンプトに 'java -version'とタイプすると正しく表示されるので、これはOKだと思います。 3)については、パスに二重引用符を入れようとしましたが、「ジャーファイルにアクセスできない」という同じメッセージが表示されます。 – 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 Explorerを通してきちんとTeamFolderにアクセスできます。

関連する問題