로그 시퀀스 번호로 복구(SQL Server)Recover to a Log Sequence Number (SQL Server)

이 항목에서는 전체 또는 대량 로그 복구 모델을 사용하는 데이터베이스와 관련된 내용을 다룹니다.This topic is relevant only for databases that are using the full or bulk-logged recovery models.

LSN(로그 시퀀스 번호)을 사용하여 복원 작업에 대한 복구 지점을 정의할 수 있습니다.You can use a log sequence number (LSN) to define the recovery point for a restore operation. 그러나 이 기능은 도구 공급업체를 위해 특별히 제작된 기능으로 일반적으로 유용한 기능은 아닙니다.However, this is a specialized feature that is intended for tools vendors and is unlikely to be generally useful.

로그 시퀀스 번호 개요 Overview of Log Sequence Numbers

LSN은 RESTORE 순서 중에 내부적으로 사용되어 데이터가 복원될 지정 시간을 추적합니다.LSNs are used internally during a RESTORE sequence to track the point in time to which data has been restored. 백업을 복구할 때 데이터는 백업이 이루어진 지정 시간에 해당하는 LSN으로 복원됩니다.When a backup is restored, the data is restored to the LSN corresponding to the point in time at which the backup was taken. 차등 및 로그 백업의 경우 데이터베이스는 보다 나중의 것으로 복원되며 이는 더 높은 LSN에 해당합니다.Differential and log backups advance the restored database to a later time, which corresponds to a higher LSN.

트랜잭션 로그의 모든 레코드는 LSN(로그 시퀀스 번호)으로 고유하게 식별됩니다.Every record in the transaction log is uniquely identified by a log sequence number (LSN). LSN은 변경이 발생한 순서에 따라 번호가 매겨집니다. 예를 들어 LSN2가 LSN1보다 큰 경우 로그 레코드 LSN1에 해당하는 변경이 먼저 발생하고 로그 레코드 LSN2에 해당하는 변경이 이후에 발생한 것입니다.LSNs are ordered such that if LSN2 is greater than LSN1, the change described by the log record referred to by LSN2 occurred after the change described by the log record LSN.

중요한 이벤트가 발생한 로그 레코드의 LSN은 올바른 복원 시퀀스를 생성하는 데 도움이 될 수 있습니다.The LSN of a log record at which a significant event occurred can be useful for constructing correct restore sequences. LSN은 정렬되기 때문에 같음 또는 같지 않음을 확인할 수 있습니다. 즉, <, >, =, <=, >=과 같은 비교가 가능합니다.Because LSNs are ordered, they can be compared for equality and inequality (that is, <, >, =, <=, >=). 이러한 비교 방식은 복원 시퀀스를 만들 때 유용하게 사용할 수 있습니다.Such comparisons are useful when constructing restore sequences.

참고

LSN은 numeric(25,0) 데이터 형식의 값입니다.LSNs are values of data type numeric(25,0). 더하기나 빼기와 같은 산술 연산은 의미가 없으며 LSN과 함께 사용하면 안 됩니다.Arithmetic operations (for example, addition or subtraction) are not meaningful and must not be used with LSNs.

백업과 복원에 사용된 LSN 보기Viewing LSNs Used by Backup and Restore

다음 중 하나 이상의 방법을 사용하여 지정된 백업 및 복원 이벤트가 발생했을 때의 로그 레코드 LSN을 볼 수 있습니다.The LSN of a log record at which a given backup and restore event occurred is viewable using one or more of the following:

참고

LSN은 일부 메시지 텍스트에도 나타납니다.LSNs also appear in some message texts.

LSN으로 복원하기 위한 Transact-SQL 구문Transact-SQL Syntax for Restoring to an LSN

RESTORE 문을 사용하여 다음과 같은 LSN에서 또는 이전에 즉시 중지할 수 있습니다.By using a RESTORE statement, you can stop at or immediately before the LSN, as follows:

  • WITH STOPATMARK ='lsn:' 절을 사용합니다. 여기서 lsn:<lsnNumber>는 지정한 LSN이 포함된 로그 레코드가 복구 지점이 되도록 지정하는 문자열입니다.Use the WITH STOPATMARK ='lsn:' clause, where lsn:<lsnNumber> is a string that specifies that the log record that contains the specified LSN is the recovery point.

    STOPATMARK는 복구 중지 지점을 나타내며 지정된 로그 레코드를 포함하는 지점까지 롤포워드됩니다.STOPATMARK roll forwards to the LSN and includes that log record in the roll forward.

  • WITH STOPBEFOREMARK ='lsn:' 절을 사용합니다. 여기서 lsn:<lsnNumber>는 지정한 LSN 번호가 포함된 로그 레코드 바로 앞의 로그 레코드가 복구 지점이 되도록 지정하는 문자열입니다.Use the WITH STOPBEFOREMARK ='lsn:' clause, where lsn:<lsnNumber> is a string that specifies that the log record immediately before the log record that contains the specified LSN number is the recovery point.

    STOPBEFOREMARK는 LSN에 롤포워드하고 롤포워드의 해당 로그 레코드를 제외합니다.STOPBEFOREMARK rolls forward to the LSN and excludes that log record from the roll forward.

    일반적으로 특정 트랜잭션을 포함하거나 제외하도록 선택합니다.Typically, a specific transaction is selected to be included or excluded. 필수는 아니지만 대개 지정된 로그 레코드는 트랜잭션 커밋 레코드입니다.Although not required, in practice, the specified log record is a transaction-commit record.

Examples

다음 예에서는 AdventureWorks 데이터베이스가 전체 복구 모델을 사용하도록 변경되었다고 가정합니다.The following example assumes that the AdventureWorks database has been changed to use the full recovery model.

RESTORE LOG AdventureWorks FROM DISK = 'c:\adventureworks_log.bak'   
WITH STOPATMARK = 'lsn:15000000040000037'  
GO  

참고 항목See Also

트랜잭션 로그 백업 적용(SQL Server) Apply Transaction Log Backups (SQL Server)
트랜잭션 로그(SQL Server) The Transaction Log (SQL Server)
복원(Transact-SQL) RESTORE (Transact-SQL)