7단원: 데이터베이스를 특정 시점으로 복원Lesson 7: Restore a database to a point in time

이 단원에서는 두 트랜잭션 로그 백업 사이의 특정 시점으로 AdventureWorks2014 데이터베이스를 복원합니다.In this lesson, you will restore the AdventureWorks2014 database to a point in time between two of the transaction log backups.

기존의 백업에서 특정 시점 복원을 수행하려면 전체 데이터베이스 백업, 차등 백업 및 복원하려는 시점 바로 다음까지의 모든 트랜잭션 로그 파일을 사용해야 합니다.With traditional backups, to accomplish point in time restore, you would need to use the full database backup, perhaps a differential backup, and all of the transaction log files up to and just past the point in time to which you wish to restore. 파일-스냅숏 백업을 사용할 경우 복원하려는 시간을 프레이밍하는 골대를 제공하는 두 개의 인접한 로그 백업 파일만 있으면 됩니다.With file-snapshot backups, you only need the two adjacent log backup files that provide the goal posts framing the time to which you wish to restore. 각 로그 백업이 각 데이터베이스 파일(각 데이터 파일 및 로그 파일)의 파일 스냅숏을 만들기 때문에 두 개의 로그 파일 스냅숏 백업 세트만 있으면 됩니다.You only need two log file snapshot backup sets because each log backup creates a file snapshot of each database file (each data file and the log file).

파일 스냅숏 백업 세트에서 지정한 특정 시점으로 데이터베이스를 복원하려면 다음 단계를 따르세요.To restore a database to a specified point in time from file snapshot backup sets, follow these steps:

  1. SQL Server Management Studio에 연결합니다.Connect to SQL Server Management Studio.

  2. 새 쿼리 창을 열고 Azure 가상 컴퓨터에 있는 데이터베이스 엔진의 SQL Server 2016 인스턴스에 연결합니다.Open a new query window and connect to the SQL Server 2016 instance of the database engine in your Azure virtual machine.

  3. 다음 Transact-SQL 스크립트를 복사하여 쿼리 창에 붙여넣은 다음 실행합니다.Copy, paste and execute the following Transact-SQL script into the query window. 5단계에서 더 적은 수의 행이 있는 특정 시점으로 복원하기 전에 Production.Location 테이블에 29,939개의 행이 있는지 확인합니다.Verify that the Production.Location table has 29,939 rows before we restore it to a point in time when there are fewer rows in step 5.

    
    -- Verify row count at start  
    SELECT COUNT (*) from AdventureWorks2014.Production.Location  
    

    행 개수 29,939가 표시됨Row count of 29,939 is displayed

  4. 다음 Transact-SQL 스크립트를 복사하여 쿼리 창에 붙여넣습니다.Copy and paste the following Transact-SQL script into the query window. 인접한 두 개의 로그 백업 파일을 선택하고 파일 이름을 이 스크립트에 필요한 날짜 및 시간으로 변환합니다.Select two adjacent log backup files and convert the file name into the date and time you will need for this script. 1단원에서 지정한 컨테이너 및 저장소 계정 이름에 맞게 URL을 수정하고 첫 번째 및 두 번째 백업 파일 이름을 제공한 다음 "June 26, 2015 01:48 PM"의 형식으로 STOPAT 시간을 제공하고 이 스크립트를 실행합니다.Modify the URL appropriately for your storage account name and the container that you specified in Lesson 1, provide the first and second backup file names, provide the STOPAT time in the format of "June 26, 2015 01:48 PM" and then execute this script. 이 스크립트를 완료하려면 몇 분 정도 걸립니다.This script will take a few minutes to complete

    
    -- restore and recover to a point in time between the times of two transaction log backups, and then verify the row count  
    ALTER DATABASE AdventureWorks2014 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;  
    RESTORE DATABASE AdventureWorks2014   
       FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<firstbackupfile>.bak'   
       WITH NORECOVERY,REPLACE;  
    RESTORE LOG AdventureWorks2014   
       FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<secondbackupfile>.bak'    
       WITH RECOVERY, STOPAT = 'June 26, 2015 01:48 PM';  
    ALTER DATABASE AdventureWorks2014 set multi_user;  
    -- get new count  
    SELECT COUNT (*) FROM AdventureWorks2014.Production.Location ;  
    
  5. 출력을 검토합니다.Review the output. 복원 후 행 개수는 18,389개로, 로그 백업 5와 6 사이의 행 개수입니다(사용자 행 개수는 다를 수 있음).Notice that after the restore the row count is 18,389, which is a row count number between log backup 5 and 6 (your row count will vary).

    특정 시점 복원 후 행 개수를 보여 주는 결과 창Results pane showing the row count after the point in time restore

다음 단원:Next Lesson:

8단원. 로그 백업에서 새 데이터베이스로 복원Lesson 8. Restore as new database from log backup