reinicia automaticamente o sql server após a conclusão do job

3

Estou procurando uma maneira de reiniciar automaticamente o serviço SQL após a conclusão de um trabalho do agente ou como a última etapa de um trabalho do agente. Ocorre-me que o serviço do agente depende do serviço do servidor, isso é possível?

Microsoft SQL Server Standard Edition (64 bits) 2008 R2 (10.50.1777.0)

Um pequeno histórico:

Isso seria uma correção temporária.

Temos um servidor sql que executa um trabalho de exportação para nosso software de contabilidade, o servidor analítico. Depois que ele é executado, o SQL Server fica sem resposta, às vezes. Estou assumindo que é o trabalho de exportação porque com o trabalho desativado sem falta de resposta. Esse trabalho leva cerca de 30 minutos para ser concluído e é desativado por volta da meia-noite. Reiniciar o serviço do servidor SQL corrige o problema manualmente e é uma solução temporária até que possamos descobrir por que o trabalho de exportação está causando problemas. Gostaria de reiniciar preventivamente o serviço após a conclusão do trabalho de exportação antes de o SQL não responder.

    
por Pete 31.07.2012 / 20:57

2 respostas

1

Estou com os comentadores; Eu não posso começar a entender por que você gostaria de fazer isso. O que você está tentando realizar? Talvez possamos ajudá-lo a encontrar uma solução melhor.

Dito isso, você não poderá fazer isso de dentro de um trabalho do SQL Agent (pelo menos totalmente), pois, como você apontou, o serviço do SQL Agent depende do serviço do SQL Server. Parar o SQL Server interrompe o SQL Agent. Na melhor das hipóteses você seria capaz de enviar um sinal de reinicialização para o serviço do SQL Server, mas você não seria capaz de obter o status de retorno de nada e você perderá o controle sobre a situação se algo fosse para o sul.

Você pode escrever um serviço ou criar uma tarefa agendada que monitore o trabalho em questão e, após a conclusão do trabalho, você reinicia.

Mas, novamente, isso soa como uma correção de band-aid para algo.

EDITAR: Se você tiver um tempo confiável após o horário em que souber que o trabalho terá terminado, basta criar uma tarefa agendada para reiniciar o serviço naquele momento usando um script do Powershell ou algo assim ( restart-service MSSQLSERVER ou restart-service -displayname "SQL Server (MSSQLSERVER) supondo que você esteja falando sobre uma instância padrão.

E então descubra por que o serviço está parado. Execute os rastreios do SQL Profiler, verifique os contadores de desempenho, execute manualmente as coisas que o trabalho executa para isolar o problema.

    
por 31.07.2012 / 21:33
0

SE o trabalho do SQL Agent estiver realmente terminando. (E isso é um grande 'se') então a última etapa do trabalho poderia usar o xpcmdshell para disparar o psservice (do pacote PSTOOLS) e informar ao serviço do SQL Server para reiniciar.

É muito ruim. Mas isso poderia ser feito.

    
por 01.08.2012 / 14:49