Restore database in Ubuntu vediamo i passaggi da seguire. Lo scenario ideale e ripristinare un database presente in un istanza Sql Server Windows su un istanza Sql Server Linux.
Nella stragrande maggioranza dei casi tale attività viene svolta per confrontare le prestazioni (stored procedure) di un database nell’ambiente Windows nell’ambiente Linux.
Ci sono anche altri metodi per fare test sulle prestazioni SQL Server ma, in tal caso, eseguiamo il restore database in Ubuntu prelevando il backup su un istanza Windows.
Requisito per ripristinare i database. Le due istanze devono avere la stessa versione:
- Origine: SQL Server 2019 su piattaforma Windows
- Destinazione: SQL Server 2019 su Ubuntu Linux
Non è possibile ripristinare un database nella versione inferiore. Perché l’istanza SQL Linux di destinazione è su una versione superiore rispetto alla versione di origine.
Sommario
Passaggi per ripristinare un database da SQL Server Windows a SQL Server Linux
Eseguire un backup completo del database
È possibile eseguire un backup completo del database utilizzando la procedura guidata GUI di SSMS o con lo script BACKUP DATABASE.
In questo caso eseguirò il backup del database DemoForLinuxRestore su disco ‘ C:
backup database DemoForLinuxRestore to disk= 'C:\SQL\DemoForLinuxRestore.bak' WITH NOFORMAT, NOINIT, SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
Copiare il backup del database dal server Windows al server Linux
In genere, quando è necessario ripristinare il database tra due istanze SQL nei server Windows, si crea una cartella condivisa e si accede al file di backup dall’istanza di destinazione.
In questo articolo, abbiamo bisogno di copiare il file di backup da un sistema operativo Windows a Linux. A tale scopo, si utilizza WinSCP.
Scaricare WinSCP e installarlo con lo stile di interfaccia predefinito ( Commander). In questa modalità vengono utilizzate due console separate per il server di origine e di destinazione. È possibile trascinare i file dall’origine alla destinazione in modalità Commander.
Avviare WinSCP. Si connette automaticamente al server Windows mentre chiede informazioni di connessione su un altro server.
Possiamo collegare il server Linux utilizzando il protocollo SFTP sulla porta 22. Specificare il nome host (indirizzo IP), il nome utente e la password per connettere il server Linux.
Dopo aver effettuato l’accesso nel riquadro sinistro, abbiamo la directory del server di Windows mentre sul riquadro destro il server Linux.
Modificare le directory in WinSCP, come illustrato di seguito.
- Origine: C:\SQL\ (la directory di backup)
- Destinazione: /tmp/ (directory temporanea per copiare i file in Linux)
Trascinare il backup del database SQL dalla console di Windows a Linux.
Successivamente connettersi al server Ubuntu utilizzando il terminale e visualizzare il file di backup esiste.
Restore database in Ubuntu
Apri la Command Line è posizioniamoci nella cartella di destinazione. Precisamente la cartella dove abbiamo trasferito il database mediante WinSCP.
cd /tmp
- ls -lrt Demo.bak
Spostiamo il backup nella directory Linux di SQL Server /var/opt/mssql. Utilizzare il comando “sudo” per avere accesso come amministratore.
- sudo
su
- cd /var/opt/mssql
La directory mssql contiene i dati, le cartelle di registro che contengono il file primario del database SQL e il file di log.
Creiamo una nuova directory in /var/opt/mssql e copiamo il file di backup da /tmp alla nuova directory.
- mkdir
backup
- scp /tmp/Demo.bak /var/opt/mssql/backup
Restore database in Ubuntu da terminale
Sempre da terminale effettuiamo l’accesso all’istanza Sql Server:
$ sqlcmd -S localhost -U SA
poi lancia il comando:
RESTORE DATABASE YourDB
FROM DISK = '/var/opt/mssql/backup/DemoForLinuxRestore.bak'
WITH MOVE 'YourDB' TO '/var/opt/mssql/data/DemoForLinuxRestore.mdf',
MOVE 'YourDB_Log' TO '/var/opt/mssql/data/DemoForLinuxRestore.ldf'
GO
Verrà visualizzato un messaggio che indica che il database è stato ripristinato correttamente, ma potrebbe succedere che il RESTORE DATABASE
può restituire un errore simile all’esempio seguente:
File 'DemoForLinuxRestore' cannot be restored to 'Z:\Microsoft SQL Server\MSSQL11.GLOBAL\MSSQL\Data\DemoForLinuxRestore\DemoForLinuxRestore.ndf'. Use WITH MOVE to identify a valid location for the file.
Msg 5133, Level 16, State 1, Server servername, Line 1
Directory lookup for the file "Z:\Microsoft SQL Server\MSSQL11.GLOBAL\MSSQL\Data\DemoForLinuxRestore\YDemoForLinuxRestore.ndf" failed with the operating system error 2(The system cannot find the file specified.).
In questo caso, il database contiene file secondari. Se questi file non sono specificati nella clausola, la procedura di ripristino tenterà di crearli nello stesso percorso del server originale.
È possibile elencare tutti i file inclusi nel backup:
RESTORE FILELISTONLY FROM DISK = '/var/opt/mssql/backup/YourDB.bak'
GO
Verifica coerenza database
Quando si ripristina un database SQL basato su Windows nell’istanza Linux, è possibile eseguire una verifica di coerenza del database utilizzando DBCC CHECKDB.
Conclusione
Abbiamo visto come eseguire restore database in Ubuntu su Sql Server 2019.
Altre guide specifiche su Sql Server sono disponibili al seguente link:
Altri post presenti nel blog: