Ripristino di un database SQLServer residente su altro server

Può capitare di dovere ripristinare le copie da un database operante su un server diverso da quello su cui deve essere ripristinato. Le cause possono essere diverse tra cui quella di un possibile inutilizzo del server originario e il più delle volte ci si ritrova con la sola disponibilità di un file .bak.

Il ripristino da IDE potrebbe essere inutilizzabile e non ci rimane che procedere ad un ripristino da riga di comando.

La prima cosa da fare è procedere a recuperare le informazioni dal file di copia con il comando

RESTORE FILELISTONLY

FROM DISK = ‘C:\COPIE\MSSql87088_635176869694282380.bak’

GO

clip_image002

che ci comunica i nomi logici del database. Di solito vengono restituite due righe, una facente riferimenti al file contenente i dati (MDF) e una i log (LDF).

Successivamente dovremo procedere a ripristino vero e proprio del database, che di seguito abbiamo chiamato MSSql87088 , attraverso il comando

RESTORE DATABASE MSSql87088 FROM DISK = ‘C:\COPIE\MSSql87088_635176869694282380.bak’

WITH RECOVERY, MOVE ‘MSSql87088_data’ TO ‘C:\GeaNet\bin\DATI\MSSql87088.mdf’,

MOVE ‘MSSql87088_log’ TO ‘C:\GeaNet\bin\DATI\MSSql87088_log.ldf’

Appena eseguito il comando RESTORE ricordare di eseguire il REFRESH del database per vederlo nell’”Object Explorer” di SSMS.

Se non ci vengono evidenziati errori da questo momento potremo ricominciare ad operare.

Dunque il comando RESTORE crea automaticamente il database e lo allega all’”Object Explorer” ma se il database fosse già stato creato in precedenza si potrebbero verificare degli errori che trattiamo di seguito.

Possibili problemi in fase di ripristino.

A volte invece il comando di ripristino può restituire degli errori e non arrivare a buon fine.

1) Usare l’opzione WITH REPLACE

Se il database MSSql87088 è appena stato creato, il comando di ripristino potrebbe ritornare l’errore

The backup set holds a backup of a database other than the existing ‘MSSql87088’ database.

In questo caso si deve sostituire l’opzione WITH RECOVERY con l’opzione WITH REPLACE

2) Single User Mode

Se il database che si vuole ripristinare è stato creato in precedenza ed è già in uso (modalità MULTI_USER), potrebbe essere restituito l’errore

Exclusive access could not be obtained because the database is in use.

Prima di eseguire il comando Restore deve essere settata la modalità di utilizzo SINGLE USER per poi ripristinarla una volta eseguito il ripristino. Prima e dopo il comando di Restore possiamo eseguire un paio di comandi per il settaggio

ALTER DATABASE MSSql87088

SET SINGLE_USER WITH

ROLLBACK IMMEDIATE

[ COMANDO RESTORE …]

ALTER DATABASE MSSql87088 SET MULTI_USER

GO

Per maggiori info sul comando RESTORE si veda http://msdn.microsoft.com/it-it/library/ms186858.aspx

Articolo precedente
Articolo successivo
Lascia un commento

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: