Eu tenho que executar algumas consultas de longa duração (reconstruindo índices, atualizando grandes conjuntos de dados) para meu banco de dados. Existe uma alternativa para executar a consulta no SQL Server Management Studio e verificá-la a cada hora? Gostaria de receber um e-mail ou uma mensagem quando terminar, mas não sei qual é a melhor ferramenta para isso.
relate perguntas
-
Quais são as principais causas de deadlocks e podem ser evitadas?
-
Quanto "Padding" coloco em meus índices?
-
Existe um processo do tipo "práticas recomendadas" para os desenvolvedores seguirem para alterações no banco de dados?
-
Como determinar se um Índice é necessário ou necessário
-
Downgrade do SQL Server 2008 para 2005
Seguindo a postagem do Gaius: Você pode criar um script .SQL que faça o que você precisa com use db na frente do script -> crie um trabalho SQL Agent do tipo sistema operacional que chama o script:
sqlcmd -E -S SERVERNAME -i"c:\SEUSCRIPT.sql" -o"C:\SEUSCRIPT_LOG.log"
Adicione uma nova etapa e use o procedimento msdb.dbo.sp_send_dbmail para enviar e-mail. Este recurso pode ser personalizado para exibir dentro do e-mail uma consulta específica de tabelas SQL para confirmar a execução do script... por exemplo, dbcc showcontig de seus índices de reconstrução.
Sim, basta usar xp_sendmail . Você pode enviar uma mensagem predefinida ou os resultados de uma instrução SQL com a mesma facilidade. Este recurso está disponível desde o SQL Server 6.5, no entanto, está obsoleto no Denali - se isso for uma parte permanente de sua operação, você deve usar o Database Mail , que é muito mais "corporativo".
Você tem a opção de usar trabalhos SQL? Você pode fazer notificações e afins por lá. No que diz respeito à obtenção de notificações intermitentes, isso exigiria algum código nos procedimentos armazenados, etc.
Eu sempre escrevo mensagens em uma tabela "EventLog". Ao processar grandes quantidades de dados, gerencio os dados em blocos e gravo atualizações de status no EventLog após cada bloco.
Quando desejo verificar o andamento do processo de execução longa, simplesmente consulto a tabela EventLog.
Exemplo de saída:
Também tenho colunas na tabela EventLog para rastrear quando a mensagem foi escrita, qual processo escreveu a mensagem etc. Desculpe por não incluir essas informações em meu exemplo.