MEMon
27-06-2009, 14:26
Ho fatto un backup completo di un database, ma al momento del ripristino mi da l'errore
Il set di backup include il backup di un database diverso dal database 'miodb' esistente.
Questo è il codice di prova che ho scritto
USE master
GO
if EXISTS (SELECT * FROM master..sysdatabases WHERE name = 'miodb') DROP DATABASE miodb
GO
CREATE DATABASE miodb
GO
-- aggiungiamo un device per il backup del database
-- sp_addumpdevice 'disk', 'backup_miodb_1', 'C:\temp_db_data\backup\backup_miodb_1.bck'
GO
USE miodb
GO
ALTER DATABASE miodb SET RECOVERY FULL
GO
-- operiamo sul DB, cambiando struttura (nuova tabella) ed inserendo dei dati
CREATE TABLE tab1
(
a char,
b varchar(10),
n integer
)
GO
INSERT INTO tab1 VALUES ( 'a' , 'ciao1' , 1 )
INSERT INTO tab1 VALUES ( 'b' , 'ciao2' , 2 )
INSERT INTO tab1 VALUES ( 'c' , 'ciao3' , 3 )
INSERT INTO tab1 VALUES ( 'd' , 'ciao4' , 4 )
INSERT INTO tab1 VALUES ( 'e' , 'ciao5' , 5 )
INSERT INTO tab1 VALUES ( 'f' , 'ciao6' , 6 )
INSERT INTO tab1 VALUES ( 'g' , 'ciao7' , 7 )
INSERT INTO tab1 VALUES ( 'h' , 'ciao8' , 8 )
GO
BACKUP DATABASE miodb TO backup_miodb_1
GO
-- aggiungiamo un device per il log delle transazioni
-- sp_addumpdevice 'disk', 'backup_miodb_log_1', 'C:\temp_db_data\backup\backup_miodb_log_1.bck'
GO
BACKUP LOG miodb
TO backup_miodb_log_1
WITH DESCRIPTION='Backup 1 miodb log',
STATS=5
-- GO
-- SELECT * FROM tab1
GO
-- Cancello il databare e lo recupero
USE master
GO
DROP DATABASE miodb
GO
IF NOT EXISTS (SELECT * FROM master..sysdatabases WHERE name='miodb') PRINT N'>> Database miodb ELIMINATO'
GO
-- Facciamo un restore da full backup più log transazioni
-- Il primo passo è recuperare il file dei dati (senza operare il restore)
RESTORE DATABASE miodb
FROM backup_miodb_1
WITH NORECOVERY,
STATS=25
GO
-- Il secondo passo è recuperare il file di log (senza ancora operare il restore)
RESTORE LOG miodb
FROM backup_miodb_log_1
WITH NORECOVERY,
STATS=25
GO
-- Il terzo ed ultimo passo è di applicare le operazioni descritte nel file di log
-- sul DB ripristinato e riattivare complessivamente il DB
RESTORE LOG miodb
WITH RECOVERY
GO
-- Verifichiamo che il DB è tornato allo stato precedente alla distruzione
USE miodb
GO
SELECT * FROM tab1
GO
Creo, backuppo, elimino e ripristino.
Il set di backup include il backup di un database diverso dal database 'miodb' esistente.
Questo è il codice di prova che ho scritto
USE master
GO
if EXISTS (SELECT * FROM master..sysdatabases WHERE name = 'miodb') DROP DATABASE miodb
GO
CREATE DATABASE miodb
GO
-- aggiungiamo un device per il backup del database
-- sp_addumpdevice 'disk', 'backup_miodb_1', 'C:\temp_db_data\backup\backup_miodb_1.bck'
GO
USE miodb
GO
ALTER DATABASE miodb SET RECOVERY FULL
GO
-- operiamo sul DB, cambiando struttura (nuova tabella) ed inserendo dei dati
CREATE TABLE tab1
(
a char,
b varchar(10),
n integer
)
GO
INSERT INTO tab1 VALUES ( 'a' , 'ciao1' , 1 )
INSERT INTO tab1 VALUES ( 'b' , 'ciao2' , 2 )
INSERT INTO tab1 VALUES ( 'c' , 'ciao3' , 3 )
INSERT INTO tab1 VALUES ( 'd' , 'ciao4' , 4 )
INSERT INTO tab1 VALUES ( 'e' , 'ciao5' , 5 )
INSERT INTO tab1 VALUES ( 'f' , 'ciao6' , 6 )
INSERT INTO tab1 VALUES ( 'g' , 'ciao7' , 7 )
INSERT INTO tab1 VALUES ( 'h' , 'ciao8' , 8 )
GO
BACKUP DATABASE miodb TO backup_miodb_1
GO
-- aggiungiamo un device per il log delle transazioni
-- sp_addumpdevice 'disk', 'backup_miodb_log_1', 'C:\temp_db_data\backup\backup_miodb_log_1.bck'
GO
BACKUP LOG miodb
TO backup_miodb_log_1
WITH DESCRIPTION='Backup 1 miodb log',
STATS=5
-- GO
-- SELECT * FROM tab1
GO
-- Cancello il databare e lo recupero
USE master
GO
DROP DATABASE miodb
GO
IF NOT EXISTS (SELECT * FROM master..sysdatabases WHERE name='miodb') PRINT N'>> Database miodb ELIMINATO'
GO
-- Facciamo un restore da full backup più log transazioni
-- Il primo passo è recuperare il file dei dati (senza operare il restore)
RESTORE DATABASE miodb
FROM backup_miodb_1
WITH NORECOVERY,
STATS=25
GO
-- Il secondo passo è recuperare il file di log (senza ancora operare il restore)
RESTORE LOG miodb
FROM backup_miodb_log_1
WITH NORECOVERY,
STATS=25
GO
-- Il terzo ed ultimo passo è di applicare le operazioni descritte nel file di log
-- sul DB ripristinato e riattivare complessivamente il DB
RESTORE LOG miodb
WITH RECOVERY
GO
-- Verifichiamo che il DB è tornato allo stato precedente alla distruzione
USE miodb
GO
SELECT * FROM tab1
GO
Creo, backuppo, elimino e ripristino.