janeiro 08, 2004

Limpando Bases

Administrar servidores de desenvolvimento é um trabalho que consome tempo e paciência. Nenhum DBA, nem os Juniors, gostam de administrar o servidor de desenvolvimento.
Um dos problemas enfrentados na administração de servidores de desenvolvimento é o uso do espaço em disco. Bases de produção tendem a possuir mais espaço do que precisam, para evitar I/O em momentos de carga ou crescimento. Servidores de desenvolvimento em geral não possuem espaço em disco abundante o que gera uma restrição a ser administrada pelo DBA.

O script abaixo foi criado para resolver o meu problema com administração de espaço em servidores de desenvolvimento. O script executa em todas as User Databases os seguintes passos:
1) Coloca o banco em modo Simple
2) Trunca o log
3) Deixa o banco com 10% de espaço disponível
4) Atualiza as informações de uso do banco de dados, para evitar que o comando sp_spaceused apresente valores negativos.

Eu coloco este script como um JOB no SQL Server para ser executado todos os dias às 03:00AM. Este script me garante que as bases em desenvolvimento terão somente os espaço que precisam, estarão em modo simple (evitando erros de log full) e com as informações atualizadas.

---Inicio do Script
/*
Script para fazer a manutencao de banco de dados de desenvolvimento.
*/

/*Seta as variaveis */
Set Nocount on
Declare @dbname varchar(100)
declare @mail varchar(500)
declare @name sysname

Declare db Cursor For ---cria um cursor para receber os nomes dos bancos de dados
Select name from master.dbo.sysdatabases
Where name not in ('master','model','msdb','tempdb')

Declare @osql varchar(1000)

/*
Criar um cursor para executar os comandos nos bancos de dados.
*/
Open db
Fetch Next from db into @dbname
While @@Fetch_status=0
Begin
---Coloca o banco em mode simple
set @osql = 'sp_dboption '''+@dbname+''',''trunc. log on chkpt.'',''true'''
---Para executar comente o comando print e tire o comentario do exec
print (@osql)
---exec(@osql)

---Trunca o Log
set @osql = 'backup log '+@dbname+' with no_log'
---Para executar comente o comando print e tire o comentario do exec
print (@osql)
---exec(@osql)

---Deixa o banco com 10% de espaço livre
set @osql = 'dbcc shrinkdatabase ('''+@dbname+''',10)'
---Para executar comente o comando print e tire o comentario do exec
print (@osql)
---exec(@osql)

---Atualiza as informacoes de uso de espacao do banco
---evita que o comando sp_spaceused apresente valores negativos
set @osql = 'dbcc updateusage('''+@dbname+''')'
---Para executar comente o comando print e tire o comentario do exec
print (@osql)
---exec(@osql)

Fetch Next from db into @dbname
End
Close db

Deallocate db

---Fim do Script

Posted by Carlos at janeiro 8, 2004 10:30 AM
Comments

O que mais me impressiona é a quantidade de comentários no script, parece até os meus programas.

Aliás, o que me impressiona mais ainda, é quando vejo "programadores de verdade" espantados com isso: "Nossa ! Você usa comentários !!!"

No futuro, ter diploma de computação vai ser débito no currículo, e não crédito.

Eita raça pra não ter o mínimo de "coding style".

Posted by: Rodrigo at janeiro 14, 2004 08:18 PM

I'm just browsing around your site for the first time, interesting read

Posted by: Tawnee at agosto 11, 2004 11:20 PM
Post a comment









Remember personal info?