Estou pedindo uma solução para executar scripts SQL personalizados em várias SQL Server Express
instâncias dentro do cronograma.
Soluções que já vi como ApexSQL Propagate
e Redgate SQL Multi Script
não possuem agendador e tenho mais de 170 instâncias para executar trabalhos periódicos nelas.
Qualquer conselho sobre como executar scripts agendados de maneira ideal será profundamente apreciado.
você pode usar o script powershell e o arquivo csv, para automatizar a maior parte do seu trabalho
E, exemplo de arquivo csv para ele:
Este script se conecta à instância do servidor DBServer, no meu caso ao padrão, e ao db, para backup pode ser master, e executar CommandText
Ele usa segurança integrada, mas você pode estender o script para usar a segurança de senha do servidor sql, você pode estender o script para receber comandos sql do arquivo, etc, etc, etc.
Você pode adicionar todas as suas 170 instâncias no arquivo csv e o script executará comandos sql em todos os seus servidores.
É claro que, para produção, o script deve ser mais complicado, com registro de erros.
Esta é provavelmente uma maneira muito estranha de fazê-lo. Se você estiver no Windows, poderá executá-los em arquivos bat que são executados com o Windows Scheduler. No linux, você pode fazer a mesma coisa com o cron e um script bash.
Não sei sobre o lado do agendamento ou as limitações do SQL Server Express, mas faço algumas tarefas de gerenciamento de frota com um script Windows CMD.EXE que se parece com isso, com a entrada sendo um arquivo de script SQL para executar cada um dos servidores.
O script real tem mais variáveis - para selecionar um servidor para executar ou "ALL", e nomear os arquivos de log após a data de hoje.
A palavra-chave do Windows para executar um comando em um determinado momento é "AT" e, se as permissões forem adequadas, isso poderá fazer com que um comando do Windows seja executado em outro de seus servidores. Portanto, se você tiver 170 servidores Windows ... e se o SQLCMD estiver instalado em cada um ... (e tiver permissão para fazer login no SQL Server, possivelmente com uma senha real - )
Como alternativa, um truque manual no Management Studio - se isso funcionar com servidores Express - é clicar com o botão direito do mouse para executar uma consulta em um grupo de servidores, que é executado em todos os servidores do grupo. Ainda estou aprendendo sobre isso e acabei de tentar essa variação - funcionou:
(Suspeito que cada um de nossos servidores tenha uma configuração de tempo ligeiramente diferente para decidir quando 12:42 realmente é.)
Para agendar a ação à 1 da manhã - marque a hora '00:59:00' caso o horário de verão o pegue. As linhas depois disso são executadas a partir do momento determinado, e o resultado de SELECT aparece como UNION ALL do resultado de cada servidor... possivelmente exibido em ordem aleatória. E você tem que deixar o Management Studio aberto durante a noite...