Linux 백업 및 복원을 사용 하 여 Windows에서 SQL Server 데이터베이스 마이그레이션Migrate a SQL Server database from Windows to Linux using backup and restore

이 항목은 다음에 적용됩니다. 아니요Windows의 SQL Server예Linux의 SQL Server아니요Azure SQL Database아니요Azure SQL Data Warehouse아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO: noSQL Server on WindowsyesSQL Server on LinuxnoAzure SQL DatabasenoAzure SQL Data WarehousenoParallel Data Warehouse

SQL Server의 백업 및 복원 기능은 Windows에서 SQL Server에서 SQL Server 2017 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 on Linux. 이 자습서에서는 Linux를 백업으로 데이터베이스를 이동한 복원 기술 하는 데 필요한 단계를 안내 합니다.In this tutorial, you will walk through the steps required to move a database to Linux with backup and restore techniques.

  • SSMS로 Windows에서 백업 파일을 만듭니다.Create a backup file on Windows with SSMS
  • Bash 셸의 Windows에 설치Install a Bash shell on Windows
  • Bash 셸의에서 백업 파일을 Linux로 이동 합니다.Move the backup file to Linux from the Bash shell
  • TRANSACT-SQL로 Linux에서 백업 파일을 복원Restore the backup file on Linux with Transact-SQL
  • 마이그레이션을 확인 하려면 쿼리를 실행 합니다.Run a query to verify the migration

필수 구성 요소Prerequisites

이 자습서를 완료 하려면 다음 필수 구성 요소가 필요 합니다.The following prerequisites are required to complete this tutorial:

Windows에서 백업을 만들기Create a backup on Windows

여러 가지 방법으로 Windows에서 데이터베이스의 백업 파일을 만듭니다.There are several ways to create a backup file of a database on Windows. 다음 단계에서는 SQL Server Management Studio (SSMS)를 사용 합니다.The following steps use SQL Server Management Studio (SSMS).

  1. 시작 SQL Server Management Studio Windows 컴퓨터에 있습니다.Start SQL Server Management Studio on your Windows machine.

  2. 연결 대화 상자에 입력 localhost합니다.In the connection dialog, enter localhost.

  3. 개체 탐색기에서 확장 데이터베이스합니다.In Object Explorer, expand Databases.

  4. 대상 데이터베이스를 마우스 오른쪽 단추로 클릭, 선택 작업, 클릭 하 고 백업... .Right-click your target database, select Tasks, and then click Back Up....

    SSMS를 사용 하 여 백업 파일을 만들려면

  5. 데이터베이스 백업 대화 상자에서 되어 있는지 확인 백업 유형전체백업할디스크합니다.In the Backup Up Database dialog, verify that Backup type is Full and Back up to is Disk. 참고 이름 및 파일의 위치입니다.Note name and location of the file. 예를 들어 라는 데이터베이스 YourDB SQL Server 2016의 기본 백업 경로 C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\YourDB.bak합니다.For example, a database named YourDB on SQL Server 2016 has a default backup path of C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\YourDB.bak.

  6. 클릭 확인 프로그램 데이터베이스를 백업 합니다.Click OK to back up your database.

참고

두 번째 방법은 백업 파일을 만드는 TRANSACT-SQL 쿼리를 실행 하는 것입니다.Another option is to run a Transact-SQL query to create the backup file. 데이터베이스에 대 한 이전 하는 단계와 동일한 동작을 수행 하는 다음 TRANSACT-SQL 명령을 호출 YourDB:The following Transact-SQL command performs the same actions as the previous steps for a database called YourDB:

BACKUP DATABASE [YourDB] TO  DISK =
N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\YourDB.bak'
WITH NOFORMAT, NOINIT, NAME = N'YourDB-Full Database Backup',
SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO

Bash 셸의 Windows에 설치Install a Bash shell on Windows

데이터베이스를 복원 하려면 먼저를 전송 해야 백업 파일에서 Windows 컴퓨터 대상 Linux 컴퓨터입니다.To restore the database, you must first transfer the backup file from the Windows machine to the target Linux machine. 이 자습서에서는 파일을 붙여 Linux Bash 셸의 (터미널 창)에서 Windows에서 실행 합니다.In this tutorial, we move the file to Linux from a Bash shell (terminal window) running on Windows.

  1. Bash 셸의 지 원하는 Windows 컴퓨터에 설치 된 scp (복사본 안전함) 및 ssh (원격 로그인) 명령.Install a Bash shell on your Windows machine that supports the scp (secure copy) and ssh (remote login) commands. 두 가지 예는 다음과 같습니다.Two examples include:

  2. Windows에서 Bash 세션을 엽니다.Open a Bash session on Windows.

Linux 백업 파일 복사 Copy the backup file to Linux

  1. Bash 세션에서는 백업 파일에 포함 된 디렉터리로 이동 합니다.In your Bash session, navigate to the directory containing your backup file. 예를 들어For example:

    cd 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\'
    
  2. 사용 하 여는 scp 명령 대상 Linux 컴퓨터에 파일을 전송 합니다.Use the scp command to transfer the file to the target Linux machine. 다음 예제에서는 전송을 YourDB.bak 의 홈 디렉터리로 user1 의 IP 주소와 Linux 서버에 192.0.2.9:The following example transfers YourDB.bak to the home directory of user1 on the Linux server with an IP address of 192.0.2.9:

    scp YourDB.bak user1@192.0.2.9:./
    

    scp 명령

파일 전송에 대 한 scp에 대 한 대안 있습니다.There are alternatives to using scp for file transfer. 하나를 사용 하는 것 Samba 창과 Linux 사이의 SMB 네트워크 공유를 구성 합니다.One is to use Samba to configure an SMB network share between Windows and Linux. Ubuntu 연습을 참조 하십시오. 는 네트워크 공유를 통해 Samba를 만드는 방법을합니다.For a walkthrough on Ubuntu, see How to Create a Network Share Via Samba. 설정 되 고 나면 네트워크 파일에으로 액세스할 수 있습니다 windows에서 같은 공유 \ \machinenameorip\공유합니다.Once established, you can access it as a network file share from Windows, such as \\machinenameorip\share.

복원 하기 전에 백업 파일을 이동Move the backup file before restoring

이 시점에서 백업 파일은 사용자의 홈 디렉터리에서 Linux 서버에 있습니다.At this point, the backup file is on your Linux server in your user's home directory. 하위 디렉터리에 백업 배치 해야 하는 SQL Server로 데이터베이스를 복원 하기 전에 /var/opt/mssql합니다.Before restoring the database to SQL Server, you must place the backup in a subdirectory of /var/opt/mssql.

  1. Windows를 이용한 적 동일한 세션에서와 대상 Linux 컴퓨터에 원격으로 연결할 ssh합니다.In the same Windows Bash session, connect remotely to your target Linux machine with ssh. 다음 예제에서는 Linux 컴퓨터에 연결 192.0.2.9 사용자로 user1합니다.The following example connects to the Linux machine 192.0.2.9 as user user1.

    ssh user1@192.0.2.9
    

    이제에서 실행 하는 명령을 원격 Linux 서버.You are now running commands on the remote Linux server.

  2. 슈퍼 사용자 모드를 입력 합니다.Enter super user mode.

    sudo su
    
  3. 새 백업 디렉터리를 만듭니다.Create a new backup directory. 디렉터리가 이미 있는 경우-p 매개 변수는 아무 작업도 수행 합니다.The -p parameter does nothing if the directory already exists.

    mkdir -p /var/opt/mssql/backup
    
  4. 해당 디렉터리에 백업 파일을 이동 합니다.Move the backup file to that directory. 다음 예제에서는 백업 파일의 홈 디렉터리에 있는 user1합니다.In the following example, the backup file resides in the home directory of user1. 백업 파일의 위치와 파일 이름과 일치 하도록 명령을 변경 합니다.Change the command to match the location and file name of your backup file.

    mv /home/user1/YourDB.bak /var/opt/mssql/backup/
    
  5. 슈퍼 사용자 모드를 종료 합니다.Exit super user mode.

    exit
    

Linux에서 데이터베이스 복원Restore your database on Linux

데이터베이스 백업을 복원 하려면 사용할 수 있습니다는 데이터베이스 복원 TRANSACT-SQL (TQL) 명령입니다.To restore the database backup, you can use the RESTORE DATABASE Transact-SQL (TQL) command.

참고

다음 단계를 사용 하 여 sqlcmd 도구입니다.The following steps use the sqlcmd tool. 설치 하지 않은 경우 SQL Server 도구 참조 Linux에서 SQL Server 설치 명령줄 도구합니다.If you haven’t install SQL Server Tools, see Install SQL Server command-line tools on Linux.

  1. 동일한 터미널 시작 sqlcmd합니다.In the same terminal, launch sqlcmd. 다음 예제에서는 연결을 사용 하 여 로컬 SQL Server 인스턴스는 SA 사용자입니다.The following example connects to the local SQL Server instance with the SA user. 메시지가 표시 되 면 암호를 입력 하거나 추가 하 여 암호를 지정 된 -P 매개 변수입니다.Enter the password when prompted, or specify the password by adding the -P parameter.

    sqlcmd -S localhost -U SA
    
  2. >1 프롬프트에서 다음 입력 데이터베이스 복원 명령에서 각 줄 (없습니다 복사 및 붙여 전체 여러 줄 명령을 한 번에).At the >1 prompt, enter the following RESTORE DATABASE command, pressing ENTER after each line (you cannot copy and paste the entire multi-line command at once). 모든 항목을 바꿉니다 YourDB 데이터베이스의 이름으로 합니다.Replace all occurrences of YourDB with the name of your database.

    RESTORE DATABASE YourDB
    FROM DISK = '/var/opt/mssql/backup/YourDB.bak'
    WITH MOVE 'YourDB' TO '/var/opt/mssql/data/YourDB.mdf',
    MOVE 'YourDB_Log' TO '/var/opt/mssql/data/YourDB_Log.ldf'
    GO
    

    데이터베이스를 성공적으로 복원 하는 메시지가 나타납니다.You should get a message the database is successfully restored.

  3. 모든 서버에서 데이터베이스를 나열 하 여 복원을 확인 합니다.Verify the restoration by listing all of the databases on the server. 복원된 된 데이터베이스를 나열 합니다.The restored database should be listed.

    SELECT Name FROM sys.Databases
    GO
    
  4. 마이그레이션된 데이터베이스에서 다른 쿼리를 실행 합니다.Run other queries on your migrated database. 다음 명령에 대 한 컨텍스트를 전환 합니다.는 YourDB 데이터베이스 및 테이블 중 하나에서 행을 선택 합니다.The following command switches context to the YourDB database and selects rows from one of its tables.

    USE YourDB
    SELECT * FROM YourTable
    GO
    
  5. 완료 되 면 사용 하 여 sqlcmd, 형식 exit합니다.When you are done using sqlcmd, type exit.

  6. 완료 되 면 원격에서 작업 ssh 세션을 입력 exit 다시 합니다.When you are done working in the remote ssh session, type exit again.

다음 단계Next steps

이 자습서에서는 Windows에서 데이터베이스를 백업 하 고 SQL Server 2017을 실행 하는 Linux 서버를 이동 하는 방법을 배웠습니다.In this tutorial, you learned how to back up a database on Windows and move it to a Linux server running SQL Server 2017. 방법에 대해 배웠습니다에:You learned how to:

  • SSMS 및 Transact SQL을 사용 하 여 Windows에서 백업 파일을 만들려면Use SSMS and Transact-SQL to create a backup file on Windows
  • Bash 셸의 Windows에 설치Install a Bash shell on Windows
  • 사용 하 여 scp Linux를 Windows에서 백업 파일을 이동 하려면Use scp to move backup files from Windows to Linux
  • 사용 하 여 ssh 원격으로 Linux 컴퓨터에 연결Use ssh to remotely connect to your Linux machine
  • 백업 파일에 대 한 복원을 준비 재배치Relocate the backup file to prepare for restore
  • 사용 하 여 sqlcmd TRANSACT-SQL 명령을 실행 하려면Use sqlcmd to run Transact-SQL commands
  • 사용 하 여 데이터베이스 백업을 복원는 데이터베이스 복원 명령Restore the database backup with the RESTORE DATABASE command

다음으로 Linux에서 SQL Server에 대 한 다른 마이그레이션 시나리오를 탐색 합니다.Next, explore other migration scenarios for SQL Server on Linux.