Я ищу способ автоматического перезапуска службы SQL после завершения задания агента или в качестве последнего шага задания агента. Мне приходит в голову, что служба агента зависит от службы сервера, возможно ли это вообще?
Microsoft SQL Server Standard Edition (64-разрядная) 2008 R2 (10.50.1777.0)
Немного предыстории:
Это временное решение.
У нас есть sql-сервер, который выполняет экспортное задание для нашей бухгалтерской программы - аналитического сервера. После запуска сервер sql иногда перестает отвечать. Я предполагаю, что это задание на экспорт, потому что с отключенным заданием нет зависаний. Это задание занимает около 30 минут и запускается около полуночи. Перезапуск службы SQL-сервера вручную устраняет проблему и является временным решением, пока мы не выясним, почему задание экспорта вызывает проблемы. Я хотел бы предварительно перезапустить службу после завершения задания экспорта, прежде чем sql перестанет отвечать.
Я с комментаторами; Я не могу понять, зачем вам это нужно. Что вы пытаетесь достичь? Возможно, мы сможем помочь вам придумать лучшее решение.
Тем не менее, вы не сможете сделать это из задания агента SQL (по крайней мере, полностью), поскольку, как вы отметили, служба агента SQL зависит от службы SQL Server. Остановка SQL Server останавливает агент SQL. В лучшем случае вы сможете отправить сигнал перезапуска службе SQL Server, но вы не сможете получить статус возврата чего-либо, и вы потеряете контроль над ситуацией, если что-то пойдет не так.
Вы можете написать службу или создать запланированную задачу, которая отслеживает данное задание и после его завершения выполняет перезапуск.
Но опять же, это звучит как пластырь для чего-то.
РЕДАКТИРОВАТЬ: Если у вас есть надежное время в нерабочее время, когда вы знаете, что задание будет завершено, я бы просто создал запланированное задание для перезапуска службы в это время с помощью сценария Powershell или чего-то еще (restart-service MSSQLSERVER
или restart-service -displayname "SQL Server (MSSQLSERVER)
предполагая, что вы говорите об экземпляре по умолчанию.
А затем выясните, почему сервис останавливается. Запустите трассировку SQL Profiler, проверьте счетчики производительности, вручную запустите все, что выполняется заданием, чтобы изолировать проблему.
ЕСЛИ задание агента SQL фактически завершается. (И это большое «если»), то на последнем этапе задания можно использовать xpcmdshell для запуска psservice (из пакета PSTOOLS) и указать службе SQL Server перезапуск.
Это действительно ужасный бездельник. Но это можно было сделать.