Digamos que eu queira alterar uma definição de configuração SQL como MAXDOP. Sei que alterar isso em uma instância ativa afetará gravemente o desempenho, pois limpará todos os planos de consulta em cache. Fazer isso enquanto a instância está em execução simplesmente não é uma opção.
Existe alguma maneira de modificar o valor agora, mas "adiar" a alteração real até a próxima vez que o servidor SQL for reiniciado?
O que estou procurando é uma opção como "scope=spfile" do Oracle para alterações de parâmetro. Essa opção existe no SQL Server?
Crie um procedimento armazenado em
master
:Agora, você pode definir o procedimento para ser um procedimento de inicialização (veja aqui e aqui ):
Se você deseja que isso seja executado apenas uma vez, desative essa opção depois que a opção de configuração for definida corretamente:
Como alternativa, você pode fazer o que MichaelK sugeriu - criar um trabalho com uma etapa que chame o procedimento acima, certifique-se de que seja de propriedade
sa
ou de alguém nasysadmin
função e, em seguida, configure-o para iniciar quando o SQL Server Agent for iniciado. No entanto, você está confiando muito no SQL Server Agent sendo configurado para iniciar automaticamente (pode não ser, e isso pode mudar antes da próxima reinicialização) e esse agente será iniciado com êxito após a próxima reinicialização do serviço (pode falhar por uma variedade de motivos, incluindo alterações na conta de serviço). Você também não pode criar um agendamento que seja executado quando o Agente for iniciado e executado apenas uma vez ( é um ou outro ), portanto, você teria que fazer outra coisa, como criar um script para uma etapa de trabalho adicional que desabilita o trabalho ou remove o agendamento.Não é realmente um grande problema para o procedimento não ser executado novamente, suponho, a menos que você faça alguma outra alteração manual mais tarde e esqueça isso - então você reverterá para essa configuração explícita na próxima vez que reiniciar após essa alteração ...
Você pode configurar um trabalho do SQL Server Agent para ser executado quando o SQL Server Agent for inicializado e definir o agendamento para ser executado apenas uma vez.