2016-09-22 3 views
0

У меня есть файл jar, который я хочу вызвать/запустить из SQL хранимой процедуры. Для этого я использую xp_cmdshell.Не удается получить доступ к jarfile при использовании xp_cmdshell

Я не создал хранимую процедуру, но пока, в основном, содержание хранимой процедуры будет

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

Я пытаюсь запустить эту строку через среды SQL Server Management Studio,, просто чтобы посмотреть если он будет работать до того, как я создам официальную хранимую процедуру. Однако, когда я запускаю его, он дает мне следующее сообщение.

Невозможно получить доступ к jarfile D: ......... \ Test_LowerJDK.jar

Я не знаю, почему это происходит. Я угадываю его, потому что я не мог пойти в конкретный каталог, который я хочу. Если да, то как я могу перейти в конкретный каталог, который я хочу, чтобы я мог запустить файл jar в этом каталоге.

FYI Я попытался запустить мой опарника из каталога, где она сохраняется через командную строку с помощью

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, потому что я м все в порядке? Я не уверен, поэтому я этого не делал.

+0

Несколько вещей, чтобы попробовать: 1) Убедитесь, что разрешения для пользователя БД выполнены. 2) Убедитесь, что java находится на пути для этого пользователя. 3) Попробуйте поместить путь к файлу в двойные кавычки, например. EXEC master..xp_cmdshell 'java -jar "D: \ ... \ ... \ ... \ Test_LowerJDK.jar"' 4) Убедитесь, что это локальный путь к серверу базы данных; –

+0

Также: только один из них за раз! :) Иногда вы пропускаете фактическое решение, если вы идете кувалдой –

+0

Hi @Nick Pfitzner! Спасибо за это, но за 1) Я уже использую пользователя администратора. Ранее я использовал другого пользователя, и всякий раз, когда я использую xp_cmdshell, он отображает сообщение, в котором говорится, что у меня нет разрешения. Нет, я уже пользуюсь учетной записью администратора. Для 2), я не уверен, что вы имеете в виду. Но так как версия java отображается правильно, когда я ввожу 'java -version' в командной строке, я думаю, что это нормально. Для 3) я попытался поместить двойные кавычки в путь, но все же он дает мне то же сообщение «Невозможно получить доступ к jarfile» – Krish

ответ

1

Я понял, почему я получил следующее сообщение.

Невозможно получить доступ к 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'; 

Это сработало хорошо.

Причина, по которой я не сразу подумал об этой ситуации, состоит в том, что, используя учетную запись администратора, я могу получить доступ к TeamFolder через проводник Windows. Я забыл, что TeamFolder на самом деле является локальной папкой на компьютере, где я вошел в систему как администратор, поэтому я могу получить доступ к TeamFolder аккуратно через Проводник Windows.

Смежные вопросы