É possível que o SQL Server 2008 R2 Standard execute automaticamente um procedimento armazenado em qualquer banco de dados especificado restaurado ou anexado à instância?
Aproximei-me de uma solução criando um gatilho no nível do servidor que executa um procedimento armazenado em um determinado banco de dados após o evento DDL CREATE_DATABASE
ou ALTER_DATABASE
é acionado. Infelizmente, isso não funciona para restaurações de backup de banco de dados.
Para elaborar, temos um procedimento armazenado de 'limpeza' que existe em todos os bancos de dados que restauramos e estou procurando uma maneira de executá-lo automaticamente sempre que um backup for restaurado para a instância.
A pesquisa no Google me indicou a configuração de auditorias ou políticas no SQL Server para obter essa funcionalidade, mas esses recursos são bastante impressionantes à primeira vista, então não sei dizer se as auditorias ou políticas são o caminho para começar a investigar.
fonte
EndTime
nunca parece ser preenchida. Pode ser que você tente se conectar ao banco de dados e, se não puder, pule-o e não documente esse evento de restauração, mas tente novamente na próxima vez que o trabalho for executado. Eu tentaria validar, mas nas minhas VMs locais eu só tenho SSDs, mas elas não têm espaço em disco para fazer um backup demorar o suficiente para observar o comportamento com precisão. :-)O
database_started
evento estendido é acionado após a restauração de um banco de dados.Crie uma sessão de evento que capture o
database_id
campo com um predicado que procure%RESTORE%
nosql_text
campo (nota: acredito que isso é suficiente - você desejará testar por si mesmo).Não estou familiarizado o suficiente com os Eventos estendidos para mostrar a melhor maneira de como responder ao evento. Seria bom se você pudesse disparar um procedimento armazenado diretamente; Mas não sei se isso é possível. No entanto, é possível pesquisar o buffer de eventos, e isso é preferível à varredura do rastreamento padrão - não apenas por motivos de desempenho, mas se o servidor estiver muito ocupado e o intervalo de pesquisa for muito longo, você poderá acabar perdendo os eventos imediatamente. Com o método Extended Events, a falta de um evento seria muito improvável.
fonte
Como você pode ver na lista de eventos DDL , um gatilho DDL não pode ser explícito o suficiente para seus requisitos.
Eu recomendo escrever um script do PowerShell para restaurar ou anexar e executar o procedimento armazenado imediatamente a seguir. Lembre-se de que sua loja precisará ser instruída a usá-lo em vez de uma restauração ou anexação típica.
Infelizmente, não acredito que exista uma maneira integrada de fazer isso.
fonte
Como você está executando seus backups? Se você deseja executar o SP após o backup, pode configurá-lo como outra tarefa no trabalho, se você estiver usando-os ou como plano de manutenção.
Portanto, você pode configurar a Auditoria para gravar no log de eventos e criar um alerta que executará um trabalho. Parece complicado, mas fará o que você está pedindo.
Dê uma olhada no seguinte código:
fonte
Como você está executando seus backups? Com o Commvault, você pode configurar uma tarefa de restauração automatizada e executá-la antes e depois dos scripts de restauração, que podem ser SQL ou PowerShell. Faço isso o tempo todo para executar o DDL para diferenças de versão e para fazer backup e restaurar permissões ao restaurar entre ambientes.
Eu acredito que o Netbackup pode outros produtos ter funcionalidade semelhante
Se você usa SQL, basta adicioná-lo como uma etapa ao trabalho que restaura o banco de dados
fonte