Как запустить работу агента сервера SQL из кода Java - PullRequest
2 голосов
/ 25 октября 2010

В моем проекте запущено несколько заданий агента SQL Server. Работы выполняются в соответствии с графиком, никаких проблем.

Но теперь мне нужно иметь возможность запускать эти задания из внешнего интерфейса (как по нажатию кнопки или около того).

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

Эти задания ведут себя так же, как функции?

Ответы [ 2 ]

3 голосов
/ 24 января 2013

Вы можете сделать это с любым разъемом БД, который я пробовал - вот несколько примеров ...

Использование 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();

В качестве альтернативы, если вы используете jdbctemplate:

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 из списка ниже.

ч

1 голос
/ 25 октября 2010

Вы можете вызвать его, используя sp_startjob proc

пример

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