Autore: Gabriele Cereti
Pubblicato il: 24 luglio 2007
Introduzione
La gestione dei backup effettuata con i Piani di Manutenzione del servizio SQL Agent di SQL Server 2000/2005 è sicuramente il metodo più sicuro e facile per creare un file di backup di un database MS SQL Server.
E’ in ogni caso possibile utilizzare uno script SQL per creare procedure personalizzate, in grado di eseguire il backup\restore di un database, in modo da integrarlo in un progetto esistente. Tale metodologia risultata utile anche in caso di malfunzionamento della parte di amministrazione di un SQL Server 2000/2005.
Infatti, eseguendo lo script da un qualsiasi programma esterno opportunamente creato, (ad esempio una semplice applicazione .NET) è possibile effettuare un backup o il restore di un database MS SQL.
Spiegazione
Backup di un Database
Tramite la stored procedure di sistema sp_addumpdevice è possibile aggiungere al server SQL un dispositivo (o periferica) logico di backup.
Il dispositivo logico riassume i parametri necessari per la creazione del backup:
- descrive dove deve essere fatto il backup
- il nome del file
Vediamo un esempio pratico, in cui vogliamo creare una periferica logica denominata myDevice in cui indichiamo che il backup sarà su disco e precisamente nel file c:\ NomeFile.bak:
USE master
EXEC sp_addumpdevice
'disk', -- indica che il dispositivo e’ su disco
'myDevice', -- indica il nome logico del nuovo dispositivo
'c:\ NomeFile.bak' -- indica il nome fisico del file di backup
Dato che la nostra memoria non è eterna e sicuramente ci dimenticheremo tutti i set di backup che creeremo, SQL ci mette a disposizione la vista di sistema sys.backup_devices attraverso la quale possiamo visualizzare tutte le periferiche di backup create su una istanza di un database.
La procedura sp_dropdevice ci permette invece di eliminare una delle periferiche che abbiamo creato, per esempio: EXEC sp_dropdevice myDevice
A questo punto potete effettuare il backup del vostro database MyBD mediante il comando SQL BACKUP DATABASE. Ecco il codice di esempio: BACKUP DATABASE MyBD to myDevice
Se non avete intenzione di creare dispositivi di backup aggiuntivi potete effettuare direttamente il backup su disco mediante questa variante: BACKUP DATABASE MyBD to DISK = ’c:\NomeFile.bak’
E' comunque possibile effettuare il backup dei soli log delle transazioni mediante tale commando: BACKUP LOG MyBD to DISK = ’c:\NomeFileLog.bak’
Ovviamente è possible anche creare una periferica logica di backup per i log:
USE master
EXEC sp_addumpdevice
'disk', -- indica che il dispositivo e’ su disco
'myDeviceLog', -- indica il nome logico del nuovo dispositivo
'c:\ NomeFileLog.bak' -- indica il nome fisico del file di backup
Periferica che verrà poi passata al comando di backup: BACKUP LOG MyBD to myDeviceLog
Al fine di limitare le perdite di dati, è vivamente consigliato di non tralasciare il backup dei log delle trasazioni, soprattutto per I database di produzione .
Restore di un Database
Il restore di un database a partire da un dispositivo logico e semplicissimo e consiste nell’eseguire il comando RESTORE DATABASE: RESTORE DATABASE MyBD to myDevice
O nel caso in cui il dispositivo logico non sia stato definito è possibile eseguire il restore a partire da un file di backup: RESTORE DATABASE MyBD to DISK = ’c:\NomeFile.bak’
Note
L’uso delle procedure sp_addumpdevice e sp_dropdevice inereti alla creazione ed eliminazione delle periferiche di backup è consentito solo agli utenti SQL appartenenti al gruppo diskadmin.
Link Utili
http://msdn2.microsoft.com/it-it/library/ms186865.aspx#backing_up_db
http://msdn2.microsoft.com/it-it/library/ms186858.aspx#restoring_full_db