2010-10-25 3 views
2

У меня в моем проекте работает несколько агентов SQL Server. Работы выполняются отлично по расписанию, без проблем.Как запустить задание агента сервера sql из java-кода

Но теперь мне нужно иметь возможность запускать эти задания с переднего конца (например, одним нажатием кнопки).

Как я могу это сделать?

Выполняют ли эти работы как функции?

ответ

1

вы можете вызвать его с помощью sp_startjob процедурного

примером

EXEC msdb.dbo.sp_start_job N'MyJobName'; 
+0

Должен ли я использовать вызываемый оператор? Я использую java spring hibernate. Оцените пример кода. – oceandrive

3

Вы можете сделать это с любым дб разъемом я пробовал - вот пару примеров ...

Использование CallableStatement:

Connection rConn = //however you get your connection... 
CallableStatement cs = rConn.prepareCall("EXEC dbo.sp_start_job N'your job name'"); 
boolean checkvar = cs.execute(); 

в качестве альтернативы, если вы используете JDBC ПЭМ плита:

jdbcTemp = //however you get your template... 
jdbcTemp.update("EXEC msdb.dbo.sp_start_job N'" + procName + "'"); 

Кроме того, для этого вам, вероятно, потребуется настроить разрешения msdb. Ваша учетная запись должна быть либо системным администратором, либо иметь роль SQLAgentOperatorRole. Чтобы установить это в SQL Server Management, перейдите в раздел Безопасность под своим движком db, разверните логины, щелкните правой кнопкой мыши учетную запись, которую вы будете использовать, и выберите свойства. В разделе «Роли сервера» вы можете предоставить sysadmin или «User Mapping» check msdb, затем выберите TargetServersRole и SQLAgentOperatorRole из списка ниже.

hth

+1

Забавная история - вчера вечером наши администраторы баз данных запустили базу данных, на которую я установил разрешения, как указано выше, в результате чего наше приложение начнет сбой. Я не мог вспомнить необходимые разрешения, но я вспомнил, что размещал об этом в StackOverflow. Проводка здесь спасла мне часы повторного поиска правильных разрешений! – plattitude

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