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 AMO 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 PMI'm just browsing around your site for the first time, interesting read
Posted by: Tawnee at agosto 11, 2004 11:20 PM