Как запустить работу агента сервера SQL из кода Java
В моем проекте запущено несколько заданий агента SQL Server. Работы выполняются в соответствии с графиком, никаких проблем.
Но теперь мне нужно иметь возможность запускать эти задания из внешнего интерфейса (как по нажатию кнопки или около того).
Как мне это сделать?
Эти рабочие места ведут себя как функции?
2 ответа
Вы можете сделать это с любым разъемом БД, который я пробовал - вот пара примеров...
Использование 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, перейдите в раздел "Безопасность" своего движка БД, разверните имена входа, щелкните правой кнопкой мыши учетную запись, которую вы будете использовать, и выберите свойства. В разделе "Роли сервера" вы можете предоставить sysadmin или в разделе "Сопоставление пользователей" проверить msdb, затем выбрать TargetServersRole и SQLAgentOperatorRole из списка ниже.
НТН