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.
| 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 MBUSE MASTERGOCREATE DATABASE DB_TESTEON ( 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 )GOUSE DB_TESTEGO-- 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_TESTESP_HELPDB DB_TESTE-- CRIANDO A TABELA DE TESTESCREATE 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% UTILIZADODBCC SQLPERF ( LOGSPACE ) -- SIMULA ESCRITA DO TRANSACTION LOG, COM LOOP QUE INSERE DADOS:DECLARE @CONT INTSET @CONT = 1WHILE @CONT <= 10000BEGIN INSERT INTO TB_TESTE VALUES('ABC') SET @CONT = @CONT + 1END-- VERIFICA O TAMANHO DO TRANSACTION LOG AGORA: DEVE ESTAR MAIS OU MENOS 44% PREENCHIDODBCC SQLPERF ( LOGSPACE ) -- FORÇA CHECKPOINTCHECKPOINT-- VERIFICA QUE O TAMANHO DO TRANSACTION LOG ESTÁ: APROXIMADAMENTO 20%DBCC SQLPERF ( LOGSPACE ) -- APAGA DADOS COM TRUNCATE TABLE , SEM UTILIZAR O LOGTRUNCATE TABLE TB_TESTE-- VERIFICA TAMANHO DO TRANSACTION LOG ESTÁ: APROXIMADAMENTO 20% CHEIODBCC SQLPERF ( LOGSPACE ) -- LIMPA TRANSACTION LOG ATRAVÉS DO BACKUP LOGBACKUP LOG DB_TESTE WITH TRUNCATE_ONLY-- VERIFICA TAMANHO DO TRANSACTION LOG ESTÁ: APROXIMADAMENTO 20% CHEIODBCC SQLPERF ( LOGSPACE ) -- DIMINUI O TAMAMHO DO TRANSACTION LOG PARA NO MÍNIMO 1MBDBCC SHRINKFILE (DB_TESTE_LOG, 1)-- VERIFICA TAMANHO DO FICHEIRO FÍSICO. O FICHEIRO C:\LabBackup\DB_TESTE_DAT.LDF -- DEVE ESTAR AGORA COM APROXIMADAMENTE 6MBSP_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 permanentesBACKUP DATABASE DB_TESTE TO DISK = 'c:\LabBackup\fic1.bak'-- Múltiplos ficheiros para a operação de Backup em paralelosp_addumpdevice @devtype = 'DISK' , @logicalname = 'DB_TESTE_dev1', @physicalname = 'c:\LabBackup\DB_TESTE1.BAK'gosp_addumpdevice @devtype = 'DISK' , @logicalname = 'DB_TESTE_dev2', @physicalname = 'c:\LabBackup\DB_TESTE2.BAK'goBACKUP DATABASE DB_TESTE TO DB_TESTE_dev1,DB_TESTE_dev2 WITH MEDIANAME = 'DB_TESTE_med'-- SIMULA O CARREGAMENTO DE MAIS DADOS:DECLARE @CONT INTSET @CONT = 101WHILE @CONT <= 200BEGIN INSERT INTO TB_TESTE VALUES('ABC') SET @CONT = @CONT + 1END-- 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 INTSET @CONT = 201WHILE @CONT <= 300BEGIN INSERT INTO TB_TESTE VALUES('ABC') SET @CONT = @CONT + 1END-- 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 INTSET @CONT = 301WHILE @CONT <= 400BEGIN INSERT INTO TB_TESTE VALUES('ABC') SET @CONT = @CONT + 1END-- Execução do Backup do Log de TransacçõesBACKUP LOG DB_TESTE TO DB_TESTE_dev-- SIMULANDO O CARREGAMENTO DE MAIS DADOS:DECLARE @CONT INTSET @CONT = 401WHILE @CONT <= 500BEGIN INSERT INTO TB_TESTE VALUES('ABC') SET @CONT = @CONT + 1END-- CRASH DA BASE DE DADOS ----------------------- INICIO DA RECUPERAçÂO ---USE MASTERGO-- backup do log com a base de dados danificada.BACKUP LOG DB_TESTETO DB_TESTE_devWITH NO_TRUNCATEGO-- Restore a partir do último full backup da base de dados USE MASTERrestore database DB_TESTE from DB_TESTE_dev with norecoveryGO-- Restore dos backups seguintes (Diferencial) restore database DB_TESTE from DB_TESTE_dev with norecovery , file=2GO-- Restore dos backups seguintes (logs) restore LOG DB_TESTE from DB_TESTE_dev with norecovery , file=3GO-- Restore dos backups seguintes (logs) restore LOG DB_TESTE from DB_TESTE_dev with recovery , file=4GO-- BASE DE DADOS OPERACIONAL---- ++++++++++++++++++++++++++++++++++++-- APAGANDO A BASE DE DADOS DB_TESTE ( FECHE QUALQUER JANELA DO ENTERPRISE MANAGER )Select * from DB_TESTE..TB_TestegoUSE MASTERDROP 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 |
 |
|
|
|
|
|
|
|