Eseguire la migrazione di un database di SQL Server da Windows per Linux tramite backup e ripristinoMigrate a SQL Server database from Windows to Linux using backup and restore

SQL Server di backup e ripristino è il modo consigliato per eseguire la migrazione di un database da SQL Server in Windows a SQL Server 2017 RC2 in Linux.SQL Server's backup and restore feature is the recommended way to migrate a database from SQL Server on Windows to SQL Server 2017 RC2 on Linux. In questo argomento vengono fornite istruzioni dettagliate per questa tecnica.This topic provides step-by-step instructions for this technique. Questa esercitazione illustrerà come:In this tutorial, you will:

  • Scaricare il file di backup di AdventureWorks in un computer WindowsDownload the AdventureWorks backup file on a Windows machine
  • Trasferimento di backup al computer LinuxTransfer the backup to your Linux machine
  • Ripristinare il database utilizzando i comandi Transact-SQLRestore the database using Transact-SQL commands
Nota

In questa esercitazione si presuppone che sia stato installato SQL Server 2017 RC2 e strumenti di SQL Server sul server Linux di destinazione.This tutorial assumes that you have installed SQL Server 2017 RC2 and the SQL Server Tools on your target Linux server.

Scaricare il backup del database AdventureWorksDownload the AdventureWorks database backup

Sebbene sia possibile utilizzare gli stessi passaggi per ripristinare un database, il database di esempio AdventureWorks fornisce un buon esempio.Although you can use the same steps to restore any database, the AdventureWorks sample database provides a good example. Si tratta di un file di backup di database esistente.It comes as an existing database backup file.

Nota

Per ripristinare un database di SQL Server in Linux, è necessario eseguire il backup di origine da SQL Server 2014 o SQL Server 2016.To restore a database to SQL Server on Linux, the source backup must be taken from SQL Server 2014 or SQL Server 2016. Il backup del numero di build di SQL Server non deve essere maggiore del numero di build di SQL Server di ripristino.The backup SQL Server build number must not be greater than the restore SQL Server build number.

  1. Nei computer Windows, passare a https://msftdbprodsamples.codeplex.com/downloads/get/880661 e scaricare il Adventure Works 2014 Full Database Backup.zip.On your Windows machine, go to https://msftdbprodsamples.codeplex.com/downloads/get/880661 and download the Adventure Works 2014 Full Database Backup.zip.

    Suggerimento

    Sebbene questa esercitazione viene illustrato il backup e ripristino tra Windows e Linux, è possibile utilizzare un browser per scaricare direttamente il database di esempio AdventureWorks nel computer Linux in Linux.Although this tutorial demonstrates backup and restore between Windows and Linux, you could also use a browser on Linux to directly download the AdventureWorks sample to your Linux machine.

  2. Aprire il file zip ed estrarre il file AdventureWorks2014.bak in una cartella nel computer.Open the zip file, and extract the AdventureWorks2014.bak file to a folder on your machine.

Trasferire il file di backup in LinuxTransfer the backup file to Linux

Per ripristinare il database, è necessario trasferire il file di backup da computer Windows per computer Linux di destinazione.To restore the database, you must first transfer the backup file from the Windows machine to the target Linux machine.

  1. Per Windows, installare una shell Bash.For Windows, install a Bash shell. Sono disponibili diverse opzioni, inclusi i seguenti:There are several options, including the following:

  2. Aprire una shell Bash (terminal) e passare alla directory contenente AdventureWorks2014.bak.Open a Bash shell (terminal) and navigate to the directory containing AdventureWorks2014.bak.

  3. Utilizzare il scp comando (copia sicuro) per trasferire il file in computer Linux di destinazione.Use the scp (secure copy) command to transfer the file to the target Linux machine. I trasferimenti di esempio seguenti AdventureWorks2014.bak della home directory di user1 sul server denominato linuxserver1.The following example transfers AdventureWorks2014.bak to the home directory of user1 on the server named linuxserver1.

    sudo scp AdventureWorks2014.bak user1@linuxserver1:./
    

    Nell'esempio precedente, è invece possibile fornire l'indirizzo IP al posto del nome del server.In the previous example, you could instead provide the IP address in place of the server name.

Esistono diverse alternative all'utilizzo del scp.There are several alternatives to using scp. Uno consiste nell'utilizzare Samba per configurare una condivisione di rete SMB tra Windows e Linux.One is to use Samba to setup an SMB network share between Windows and Linux. Per una procedura dettagliata in Ubuntu, vedere come creare una condivisione di rete tramite Samba.For a walkthrough on Ubuntu, see How to Create a Network Share Via Samba. Una volta stabilita, è possibile accedere come un file di rete condivisione da Windows, ad esempio \ \machinenameorip\condividere.Once established, you can access it as a network file share from Windows, such as \\machinenameorip\share.

Spostare il file di backupMove the backup file

A questo punto, il file di backup è il server Linux.At this point, the backup file is on your Linux server. Prima di ripristinare il database a SQL Server, è necessario inserire il backup in una sottodirectory di /var/opt/mssql.Before restoring the database to SQL Server, you must place the backup in a subdirectory of /var/opt/mssql.

  1. Aprire un terminale nel computer Linux di destinazione che contiene il backup.Open a Terminal on the target Linux machine that contains the backup.

  2. Passare alla modalità utente con privilegi avanzati.Enter super user mode.

    sudo su
    
  3. Creare una nuova directory di backup.Create a new backup directory. Il parametro -p non esegue alcuna operazione se la directory esiste già.The -p parameter does nothing if the directory already exists.

    mkdir -p /var/opt/mssql/backup
    
  4. Spostare il file di backup in tale directory.Move the backup file to that directory. Nell'esempio seguente, il file di backup si trova nella home directory di user1.In the following example, the backup file resides in the home directory of user1. Modificare il comando in base alla posizione di AdventureWorks2014.bak nel computer.Change the command to match the location of AdventureWorks2014.bak on your machine.

    mv /home/user1/AdventureWorks2014.bak /var/opt/mssql/backup/
    
  5. Uscire dalla modalità utente con privilegi avanzati.Exit super user mode.

    exit
    

Ripristinare il backup del databaseRestore the database backup

Per ripristinare il backup, è possibile utilizzare il comando RESTORE DATABASE Transact-SQL (TQL).To restore the backup, you can use the RESTORE DATABASE Transact-SQL (TQL) command.

Nota

La procedura seguente utilizza lo strumento sqlcmd.The following steps use the sqlcmd tool. Se non è ancora stato installare gli strumenti di SQL Server, vedere installazione di SQL Server in Linux.If you haven’t install SQL Server Tools, see Install SQL Server on Linux.

  1. In terminal stesso, avviare sqlcmd.In the same terminal, launch sqlcmd. Nell'esempio seguente si connette all'istanza locale di SQL Server con il SA utente.The following example connects to the local SQL Server instance with the SA user. Immettere la password quando richiesto o specificare la password con il parametro -P.Enter the password when prompted or specify the password with the -P parameter.

    sqlcmd -S localhost -U SA
    
  2. Dopo la connessione, immettere quanto segue ripristinare database premendo INVIO dopo ogni riga di comando.After connecting, enter the following RESTORE DATABSE command, pressing ENTER after each line. Nell'esempio seguente ripristina il AdventureWorks2014.bak file dal /var/opt/mssql/backup directory.The example below restores the AdventureWorks2014.bak file from the /var/opt/mssql/backup directory.

    RESTORE DATABASE AdventureWorks
    FROM DISK = '/var/opt/mssql/backup/AdventureWorks2014.bak'
    WITH MOVE 'AdventureWorks2014_Data' TO '/var/opt/mssql/data/AdventureWorks2014_Data.mdf',
    MOVE 'AdventureWorks2014_Log' TO '/var/opt/mssql/data/AdventureWorks2014_Log.ldf'
    GO
    

    È necessario ottenere un messaggio che è stato ripristinato il database.You should get a message the database is successfully restored.

  3. Per verificare il ripristino, modifica il contesto per il database AdventureWorks.Verify the restoration by first changing the context to the AdventureWorks database.

    USE AdventureWorks
    GO
    
  4. Eseguire la query seguente che elenca i primi 10 prodotti nel Production tabella.Run the following query that lists the top 10 products in the Production.Products table.

    SELECT TOP 10 Name, ProductNumber FROM Production.Product ORDER BY Name
    GO
    

Output dalla query Production

Passaggi successiviNext steps

Per ulteriori informazioni su altre tecniche di migrazione di database e dei dati, vedere la migrazione dei database di SQL Server in Linux.For more information on other database and data migration techniques, see Migrate databases to SQL Server on Linux.