Colocando um script em espera
Posted in Dica rápida, Programação, SQL SERVER 2000, SQL SERVER 2005, SQL SERVER 2008, SQL SERVER 2008 R2, SQL SERVER 7 on November 19th, 2009 by Silas Mendes – Be the first to commentUma dica rápida antes do feriadão:
Como agendar um script ou executá-lo de forma recorrente sem utilizar o SQL Agent?
O SQL possui um comando de controle de fluxo que pode nos auxiliar nessas tarefas: WAITFOR.
Como utilizá-lo?
Digamos que você queira monitorar o crescimento dos logs a cada 5 minutos. Nesse caso podemos utilizar o WAITFOR DELAY junto com uma estrutura de repetição como o while. Veja o exemplo:
declare @i int
set @i = 1
while @i < 12
begin
– coleta informação sobre espaço utilizado pelo log
dbcc sqlperf(logspace)
– aguarda 05 minutos para continuar
waitfor delay ’00:05:00′
set @i = @i + 1
end
Agora imagine um cenário onde você precise “agendar” a execução de um script para as 22h. Veja o exemplo:
– espera até às 22h
waitfor time ’22:00:00′
GO
dbcc sqlperf(logspace)
GO
select getdate() horaExecucao
É importante salientar que este comando não substitui o SQL Agent! Ele normalmente é utilizado em situações pontuais. Por exemplo, para o DBA às vezes é interessante monitorar durante alguns minutos a situação dos locks e para isso não é necessário criar um job e agendá-lo no SQL Agent, é mais simples utilizar o WAITFOR DELAY. Além disso você pode acompanhar o resultado das execuções diretamente no Management Studio, Query Analyser, sqlcmd, etc.
O comando é interessante, mas não veja nele uma forma de implementar uma nova política de backup, ok?
Bom feriadão!