/*
/********************************************************/
/* Este script vai limpar o logs de todos os bancos do servidor */
/* corrente. */
/* Apenas não ocorrerá limpeza dos bancos do sistema. */
/* Acrescentei para fazer um shirink na base. */
/********************************************************/
declare @SQLString nvarchar(1000)
-- acrescimo meu
declare @SQLString2 nvarchar(1000)
-- fim
declare @database nvarchar(100)
-- Declaro o cursor para os databases
declare cr1 cursor for
-- here status not in (528, 66048) com isto este script não irá limpar o log e nem fazer o shirink das bases em off line
select name from sysdatabases where status not in (528, 66048, 66056) order by name
open cr1
-- lendo o primeiro registro
fetch next from cr1
into @database
while @@fetch_status <> -1
begin
-- seto a variavel para receber o comando para execução
set @SQLString = 'checkpoint backup log ' + ltrim(rtrim (@database)) + ' with truncate_only '
-- acrescimo meu
set @SQLString2 = 'DBCC SHRINKdatabase (' + ltrim(rtrim (@database)) + ')'
--fim
--DBCC SHRINKdatabase (CentralOperacoes)
-- acrescimo meu
print @SQLString
print @SQLString2
--fim
-- executo a limpeza do log do banco que esta o cursor
exec sp_executesql @SQLString
-- acrescimo meu
exec sp_executesql @SQLString2
-- fim
-- lendo o proximo registro
fetch next from cr1
into @database
end
close cr1
deallocate cr1
go
fonte: http://social.technet.microsoft.com/Forums/pt-BR/sqlserver2005pt/thread/1879b1d2-2cd3-4e1a-b377-8b5aa47d4974
*/
Nenhum comentário:
Postar um comentário