É de conhecimento geral, que instâncias Express do SQL Server não possuem suporte para a criação de jobs programadas, então como fazer para criar um plano de manutenção semanal afim de otimizar o uso dos recursos, principalmente de disco?
Não existe mistérios, só é necessário utilizar a ferramenta Task Scheduler do próprio sistema operacional (Windows) para auxiliar na execução programada, mas para utilizá-la é necessário 2 etapas antes que é a criação do script SQL que executará as tarefas, e um arquivo .bat com os comandos de execução no sistema.
No arquivo .sql escreva:
EXEC sp_MSforeachdb
@command1 = 'DBCC CHECKDB(?) WITH NO_INFOMSGS',
@command2 = 'USE ?;
IF NOT EXISTS(SELECT 1 WHERE ''?'' IN (''master'',''model'',''msdb'',''tempdb''))
BEGIN
EXEC sp_MSforeachtable
@command1 = "DBCC DBREINDEX (''&'', '' '' , 80) WITH NO_INFOMSGS",
@replacechar = ''&'';
EXEC sp_updatestats;
DBCC shrinkdatabase (?);
END';
No .bat escreva:
date /t
time /t
sqlcmd -U <usuario_do_banco> -P <senha> -S <instância> -i <caminho_e_arquivo.sql> -o <caminho_e_arquivo.log>
Exemplo do arquivo .bat:
date /t
time /t.
sqlcmd -U teste -P 123456 -S SQLTESTE -i E:\ROTINA\Manutencao_Semanal.sql -o E:\ROTINA\Log_Manutencao_Semanal.log
Criados estes 2 arquivos (.sql e .bat) basta criar uma tarefa no Task Scheduler, estabelecer uma recorrência a seu gosto e colocar como ação a ser executada o arquivo .bat. Lembrando que o ideal é configurar a tarefa para rodar com altos privilégios.
Dúvidas? silverio@siltechconsult.com.br
Comments