Backup e ripristino del database SQL Server dalla riga di comando
La parte più importante di un piano di manutenzione di SQL Server è il backup regolare dei database. Per eseguire il backup di un database, non è sufficiente copiare i rispettivi file MDF e LDF del database poiché SQL Server ha un blocco su questi. Invece, è necessario creare un vero file di backup tramite SQL Server.
Mentre ciò può essere fatto sviluppando un piano di manutenzione all'interno di SQL Management Studio, le edizioni Express gratuite di SQL Server non offrono questa interfaccia. Per ovviare a questo problema, puoi facilmente eseguire il backup dei tuoi database eseguendo il comando seguente mentre sei loggato come amministratore di Windows:
SqlCmd -E -S Server_Name -Q "BACKUP DATABASE [Name_of_Database] TO DISK =" X: PathToBackupLocation [Name_of_Database] .bak ""
Gli esempi di seguito aiuteranno.
Istanza predefinita di SQL Server:
SqlCmd -E -S MyServer -Q "BACKUP DATABASE [MyDB] TO DISK =" D: BackupsMyDB.bak ""
Istanza di SQL Server nominata:
SqlCmd -E -S MyServerMyInstance -Q "BACKUP DATABASE [MyDB] TO DISK =" D: BackupsMyDB.bak ""
Quanto sopra crea una copia di backup completamente ripristinabile di "MyDB" nel file "D: BackupsMyDB.bak" che può essere utilizzato per il ripristino di emergenza. Naturalmente, è possibile modificare la posizione e il file di backup in base alle proprie esigenze, ma accertarsi di specificare un percorso di cartella esistente sul computer locale. Questo file di backup può quindi essere copiato su un'unità nastro o su un'altra posizione di backup esterna.
Una domanda comune è "Un file di backup può essere creato su un'unità mappata o su una posizione UNC?" E la risposta rapida è no. Il motivo è perché il servizio SQL Server di Windows viene eseguito come un account utente che ha solo accesso al computer locale. È possibile modificare l'account in cui viene eseguito il servizio, ma questo è altamente sconsigliato per motivi di sicurezza.
Ripristino di un backup del database dalla riga di comando
Per ripristinare un database da un file di backup, usa semplicemente il comando:
SqlCmd -E -S Server_Name -Q "RESTORE DATABASE [Name_of_Database] FROM DISK =" X: PathToBackupFile [File_Name] .bak ""
Per esempio:
SqlCmd -E -S MyServer -Q "RESTORE DATABASE [MyDB] FROM DISK =" D: BackupsMyDB.bak ""
Il comando precedente ripristinerà un backup di "MyDB" dai dati memorizzati nel file di backup "D: BackupsMyDB.bak". Eventuali modifiche apportate a MyDB da quando è stato creato il file di backup andranno perse.
Una cosa importante da ricordare quando si utilizza il comando precedente è che è destinato ad essere utilizzato sullo stesso server SQL su cui è stato creato il rispettivo file di backup. I file di backup SQL memorizzano le informazioni "dietro le quinte" che controllano dove e come vengono copiati i file di dati nel file di backup. Se si ripristina un backup da un diverso server SQL, le posizioni dei percorsi nel file di backup potrebbero non corrispondere al server su cui si sta eseguendo il ripristino e verrà generato un errore. Mentre questo può essere risolto, è molto più semplice ripristinare i backup creati su un altro SQL Server utilizzando lo strumento SQL Management Studio.
Nota: i comandi sopra funzioneranno su SQL 2005 e versioni successive (qualsiasi edizione). Per SQL 2000 e versioni precedenti, sostituire "SqlCmd" con "oSql".