Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 SQL Server 2005 Forums
 Transact-SQL (2005)
 Script to Backup/Restore

Author  Topic 

xnet
Starting Member

2 Posts

Posted - 2008-05-06 : 20:13:08
Could any body take a look on this, and see if anything is wrong !?

-----------------------------------------------------
-- DEFINIÇÃO DA BASE DE DADOS DB_TESTE E FICHEIROS DE LOG.
-- DEFINIÇÃO DA TABELA TB_TESTE E INCLUSÃO DE DADOS
-- VERIFICAÇÃo DO TAMAMHO DO TRANSACION LOG
-- TRUNCAGEM E BACKUP DO TRANSACTION LOG
-- DIMUNUIÇÃO DO TRANSACTION LOG
-- AUMENTO DO TRANSACTION LOG
-----------------------------------------------------


-- CRIA BASE DE DADOS DE TESTE COM 50MB+FICHEIRO DE LOG COM 12 MB
USE MASTER
GO

CREATE DATABASE DB_TESTE
ON
(
NAME = DB_TESTE_DAT,
FILENAME = 'C:\LabBackup\DB_TESTE_DAT.MDF',
SIZE = 50,
FILEGROWTH = 10
)
LOG ON
(
NAME = 'DB_TESTE_LOG',
FILENAME = 'D:\LabBackup\DB_TESTE_DAT.LDF',
SIZE = 12MB,
FILEGROWTH = 10MB
)
GO

USE DB_TESTE
GO
-- Forma de alterar do Modelo de Recuperação:
ALTER DATABASE DB_TESTE
SET RECOVERY FULL
GO
-- VER INFORMAÇÃO SOBRE A BASE DE DADOS DB_TESTE
SP_HELPDB DB_TESTE

-- CRIANDO A TABELA DE TESTES
CREATE TABLE TB_TESTE
(
COD INT IDENTITY(1,1),
NOME CHAR(3)
)
GO

-- VERIFICA TRANSACTION LOG. O TAMANHO RETORNADO É UM POUCO MENOR DE 12MB
-- (APROXIMADAMENTE 11.9 ) E
-- O TRANSACTION LOG ESTÁ 2.7% UTILIZADO
DBCC SQLPERF ( LOGSPACE )

-- SIMULA ESCRITA DO TRANSACTION LOG, COM LOOP QUE INSERE DADOS:
DECLARE @CONT INT

SET @CONT = 1

WHILE @CONT <= 10000
BEGIN
INSERT INTO TB_TESTE VALUES('ABC')
SET @CONT = @CONT + 1
END

-- VERIFICA O TAMANHO DO TRANSACTION LOG AGORA: DEVE ESTAR MAIS OU MENOS 44% PREENCHIDO
DBCC SQLPERF ( LOGSPACE )


-- FORÇA CHECKPOINT
CHECKPOINT

-- VERIFICA QUE O TAMANHO DO TRANSACTION LOG ESTÁ: APROXIMADAMENTO 20%
DBCC SQLPERF ( LOGSPACE )

-- APAGA DADOS COM TRUNCATE TABLE , SEM UTILIZAR O LOG
TRUNCATE TABLE TB_TESTE

-- VERIFICA TAMANHO DO TRANSACTION LOG ESTÁ: APROXIMADAMENTO 20% CHEIO
DBCC SQLPERF ( LOGSPACE )

-- LIMPA TRANSACTION LOG ATRAVÉS DO BACKUP LOG
BACKUP LOG DB_TESTE WITH TRUNCATE_ONLY

-- VERIFICA TAMANHO DO TRANSACTION LOG ESTÁ: APROXIMADAMENTO 20% CHEIO
DBCC SQLPERF ( LOGSPACE )

-- DIMINUI O TAMAMHO DO TRANSACTION LOG PARA NO MÍNIMO 1MB
DBCC SHRINKFILE (DB_TESTE_LOG, 1)

-- VERIFICA TAMANHO DO FICHEIRO FÍSICO. O FICHEIRO C:\LabBackup\DB_TESTE_DAT.LDF
-- DEVE ESTAR AGORA COM APROXIMADAMENTE 6MB
SP_HELPDB DB_TESTE

-- VERIFICAR O QUANTO DO TRANSACTION LOG ESTÁ CHEIO AGORA: APROXIMADAMENTE 3%
DBCC SQLPERF ( LOGSPACE )
-- +++++++++++++++++++++++++++++++++++++


--Cria do Device de Backup: ficheiro que conterá o backup.
sp_addumpdevice @devtype = 'DISK' ,
@logicalname = 'DB_TESTE_dev',
@physicalname = 'C:\LabBackup\DB_TESTE.BAK'

-- ver nome lógio e físico deste ficheiro registado
select * from master..sysdevices

-- Cria ficheiros de backup sem devices permanentes
BACKUP DATABASE DB_TESTE
TO DISK = 'c:\LabBackup\fic1.bak'


-- Múltiplos ficheiros para a operação de Backup em paralelo
sp_addumpdevice @devtype = 'DISK' ,
@logicalname = 'DB_TESTE_dev1',
@physicalname = 'c:\LabBackup\DB_TESTE1.BAK'
go
sp_addumpdevice @devtype = 'DISK' ,
@logicalname = 'DB_TESTE_dev2',
@physicalname = 'c:\LabBackup\DB_TESTE2.BAK'
go
BACKUP DATABASE DB_TESTE
TO DB_TESTE_dev1,DB_TESTE_dev2
WITH
MEDIANAME = 'DB_TESTE_med'



-- SIMULA O CARREGAMENTO DE MAIS DADOS:
DECLARE @CONT INT
SET @CONT = 101

WHILE @CONT <= 200
BEGIN
INSERT INTO TB_TESTE VALUES('ABC')
SET @CONT = @CONT + 1
END


-- Modelos de Backup ---

-- Execução do Backup Completo da base de dados DB_TESTE.
BACKUP DATABASE DB_TESTE
TO DB_TESTE_dev


-- SIMULANDO O CARREGAMENTO DE MAIS DADOS:
DECLARE @CONT INT
SET @CONT = 201

WHILE @CONT <= 300
BEGIN
INSERT INTO TB_TESTE VALUES('ABC')
SET @CONT = @CONT + 1
END


-- Execução do Backup Diferencial da base de dados DB_TESTE.
BACKUP DATABASE DB_TESTE
TO DB_TESTE_dev
WITH DIFFERENTIAL

-- SIMULA O CARREGAMENTO DE MAIS DADOS:
DECLARE @CONT INT
SET @CONT = 301

WHILE @CONT <= 400
BEGIN
INSERT INTO TB_TESTE VALUES('ABC')
SET @CONT = @CONT + 1
END
-- Execução do Backup do Log de Transacções

BACKUP LOG DB_TESTE
TO DB_TESTE_dev

-- SIMULANDO O CARREGAMENTO DE MAIS DADOS:
DECLARE @CONT INT
SET @CONT = 401

WHILE @CONT <= 500
BEGIN
INSERT INTO TB_TESTE VALUES('ABC')
SET @CONT = @CONT + 1
END

-- CRASH DA BASE DE DADOS ---------------------
-- INICIO DA RECUPERAçÂO ---
USE MASTER
GO
-- backup do log com a base de dados danificada.
BACKUP LOG DB_TESTE
TO DB_TESTE_dev
WITH NO_TRUNCATE
GO

-- Restore a partir do último full backup da base de dados
USE MASTER
restore database DB_TESTE
from DB_TESTE_dev
with norecovery
GO

-- Restore dos backups seguintes (Diferencial)

restore database DB_TESTE
from DB_TESTE_dev
with norecovery , file=2
GO

-- Restore dos backups seguintes (logs)
restore LOG DB_TESTE
from DB_TESTE_dev
with norecovery , file=3
GO

-- Restore dos backups seguintes (logs)
restore LOG DB_TESTE
from DB_TESTE_dev
with recovery , file=4
GO


-- BASE DE DADOS OPERACIONAL--
-- ++++++++++++++++++++++++++++++++++++

-- APAGANDO A BASE DE DADOS DB_TESTE ( FECHE QUALQUER JANELA DO ENTERPRISE MANAGER )

Select * from DB_TESTE..TB_Teste
go

USE MASTER

DROP DATABASE DB_TESTE

/* FIM DO FICHEIRO */

GilaMonster
Master Smack Fu Yak Hacker

4507 Posts

Posted - 2008-05-07 : 02:25:13
Is it giving errors? Is it not doing what you expect?

--
Gail Shaw
Go to Top of Page
   

- Advertisement -