Backup Pianificato con SQL Server 2005 Express

Backup Pianificato con SQL Server 2005 Express
SQL Server Express, al contrario delle versioni a pagamento più complete di SQL Server, non dispone del
servizio di Agent.
Questo comporta che, nativamente, non è possibile schedulare nessuna attività amministrativa che
desideriamo eseguire al suo interno, compresi i Backup e il ricalcolo di indici e statistiche.
Per supplire a questa mancanza ci vengono in contro due strumenti da usare in un'unica soluzione:
- Lo schedulatore di Windows
- L'utility a riga di comando SQLCMD.exe, presente in tutte le versioni di SQL Server 2005 (nuova versione
del vecchio OSQL.EXE di SQL Server 2000)
Nel nostro esempio scheduleremo il backup quotidiano di uno userdb all'1:00 AM.
La nostra soluzione per la schedulazione automatizzata sarà composta quindi da:
- Un file backup.sql, contenente le istruzioni sql che vorremo andare ad eseguire
- Un file backupSQL.bat, contenente la chiamata a SQLCMD per eseguire tutto il codice contenuto nel file
.sql.
- Una nuova schedulazione negli scheduled tasks
Ecco la procedura:
1) Creiamo il file backup.sql. Questo conterrà il seguente codice:
BACKUP DATABASE [MioUserDB] TO
DISK = N'D:\BackupSQL\[MioUserDB]'
WITH NOFORMAT, INIT, NAME = N'Database Backup',
SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
(nota: vi rimando ai books online di sql per i dettagli sui parametri dell'istruzione BACKUP DATABASE)
2) Creiamo il file backupSQL.bat. Questo conterrà il seguente codice:
@ECHO OFF
ECHO Inizio backup SQL...
SQLCMD -S [Nome istanza] -U [utente] -P [password] -i "backup.sql" -o
"backupSQL.log"
ECHO Fine backup
3) Mettiamo entrambi i file nella stessa cartella e andiamo a creare il task schedulato sotto windows
- Pulsante Start->Accessori->Utilità di sistema->Operazioni Pianificate
- Creiamo il nuovo task schedulato e indichiamogli di eseguire il file backup.bat ogni giorno all'una del
mattino.
La procedura è semplice e completamente guidata. Giornalmente troveremo nel file backupSQL.log il
rapporto dell'attività eseguita.
NOTE:
Nello script, in questo esempio, abbiamo inserito le credenziali dell'utente che deve accedere a SQL. Per
ragioni di sicureza potremmo voler nascondere queste informazioni: è possibie farlo usando un'utenza di
windows per l'accesso a SQL (usando l'opzione -E su SQLCMD al posto di -U e -P) e inserendo le relative
credenziali solo nello scheduler di windows.
Buon lavoro.