Restore database in Ubuntu

Restore database in Ubuntu su Sql Server 2019

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.

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.

Restore database in Ubuntu - Installazione WinSCP
Restore database in Ubuntu – Installazione WinSCP

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.

Restore database in Ubuntu -  Connessione mediante protocollo SFTP
Restore database in Ubuntu – Connessione mediante protocollo SFTP

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
Restore database in Ubuntu  - utilizzo terminale
Restore database in Ubuntu – utilizzo terminale

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:

Autore Bartolomeo

Consulente tecnico con la passione per il web e la tecnologia e tutto quello che le ronza intorno.
Nel tempo libero scrivo articoli per il mio blog su argomenti vari, in particolare su configurazione Windows, Linux e WordPress.

Condividi questo articolo!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Ho letto la policy privacy e accetto il trattamento dei miei dati personali in conformità al D.Lgs. 196/2003