Linux & SO

agosto 12, 2011

Script para backup de DataBases SQLServer – parte 01

Filed under: banco de dados, DB, SQL Server — Tags:, , , — maltzsama @ 2:58 pm

ProblemUm problema comum no mundo de banco de dados são os backups. Realizar diversos backups de diversas bases manualmente é tarefa de estagiáriocorno. As vezes as coisas podem parecer mais complicadas do que realmente são. Por isso esse tutorial mostrará como fazer o backup de suas bases de seu banco de forma simples e rápida. Usar o SQLManager e os planos de manutenção são uma boa. Mas as normalmente o bom e velho script tem um comportamento mais simples e mais fácil de se manobrar.
Como podemos gerar backups usando o T-SQL? Simples:
BACKUP DATABASE DBNAME TO DISK = "c:\backup.bak"
Esse seria o mais simples de todos, fazendo de um só banco, vc colocando o nome do seu banco. Mas e se você tiver diversos bancos e não está com a menor paciência pra escrever várias linhas iguais a essa para fazer o backup de cada banco? Ou ainda e se você possuir diversos servidores, com cada servidor com diversos bancos que precisam ter um backup e não terá tempo para escrever nome por nome de banco?
Bem, agora sim as coisas poderiam ficar complicada, mas a verdade é que essa complicação não existe. Veja:
DECLARE @name VARCHAR(50) -- nome do banco de dados
DECLARE @path VARCHAR(256) -- path para o arquivo de backup
DECLARE @fileName VARCHAR(256) -- nome do arquivo de backup
DECLARE @fileDate VARCHAR(20) -- usado para o nome do arquivo

SET @path = 'C:\Backup\' --diretório onde tudo será salvo

SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)

DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb') --não faremos backup dos bancos do SQL Server

OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name

WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
BACKUP DATABASE @name TO DISK = @fileName

FETCH NEXT FROM db_cursor INTO @name
END

CLOSE db_cursor
DEALLOCATE db_cursor

Simples e objetivo, resolve seu problema de fazer diversos backups de uma única vez e sem ter que ficar colocando nome por nome. Esse backup é um backup full. Você pode procurar formas de fazer backups incrementais e coisas assim…

Nos próximos talvez eu me aprofunde nisso.

Deixe um comentário »

Nenhum comentário ainda.

Feed RSS para comentários sobre este post. URI de trackback

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Tema: Shocking Blue Green. Blog no WordPress.com.

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.