다음을 통해 공유


표시된 트랜잭션이 포함된 관련 데이터베이스 복구

적용 대상: SQL Server

이 항목은 표시된 트랜잭션을 포함하고 전체 또는 대량 로그된 복구 모델을 사용하는 데이터베이스에만 관련됩니다.

특정 복구 지점으로 복원하기 위한 요구 사항에 대한 자세한 내용은 SQL Server 데이터베이스를 특정 시점으로 복원(전체 복구 모델)을 참조하세요.

SQL Server에서는 트랜잭션 로그에 명명된 표시 삽입을 지원하여 특정 표시로 복구가 가능합니다. 로그 표시는 트랜잭션별로 지정되며 연결된 트랜잭션이 커밋되는 경우에만 삽입됩니다. 따라서 표시를 특정 작업에 연결할 수 있으며 이 작업을 포함하거나 제외하는 지점으로 복구할 수 있습니다.

트랜잭션 로그에 명명된 표시를 삽입하기 전에 다음 사항을 고려합니다.

  • 트랜잭션 표시는 로그 공간을 소비하므로 데이터베이스 복구 전략에서 중요한 역할을 하는 트랜잭션에 대해서만 사용해야 합니다.

  • 표시된 트랜잭션 커밋 후에는 msdblogmarkhistory 테이블에 행이 삽입됩니다.

  • 표시된 트랜잭션이 동일한 데이터베이스 서버 또는 다른 서버의 여러 데이터베이스에 걸쳐 있는 경우 영향을 받는 모든 데이터베이스의 로그에 표시를 기록해야 합니다. 자세한 내용은 표시된 트랜잭션을 사용하여 관련 데이터베이스를 일관되게 복구(전체 복구 모델)를 참조하세요.

참고 항목

트랜잭션을 표시하는 방법에 대한 자세한 내용은 표시된 트랜잭션을 사용하여 관련 데이터베이스를 일관되게 복구(전체 복구 모델)를 참조하세요.

트랜잭션 로그에 명명된 표시를 삽입하기 위한 Transact-SQL 구문

트랜잭션 로그에 표시를 삽입하려면 BEGIN TRANSACTION 문과 WITH MARK [description] 절을 사용합니다. 표시 이름은 트랜잭션 이름과 같습니다. 선택 요소인 description은 표시의 텍스트 설명이며, 표시 이름이 아닙니다. 예를 들어 트랜잭션의 이름과 다음 BEGIN TRANSACTION 문에서 만든 표시는 Tx1입니다.

BEGIN TRANSACTION Tx1 WITH MARK 'not the mark name, just a description'    

트랜잭션 로그는 표시 이름(트랜잭션 이름), 설명, 데이터베이스, 사용자, 날짜/시간 정보 및 LSN(로그 시퀀스 번호)을 기록합니다. 날짜/시간 정보를 표시 이름과 함께 사용하여 표시를 고유하게 식별합니다.

여러 데이터베이스에 걸쳐 있는 트랜잭션에 표시를 삽입하는 방법에 대한 자세한 내용은 표시된 트랜잭션을 사용하여 관련 데이터베이스를 일관되게 복구(전체 복구 모델)를 참조하세요.

표시로 복구하기 위한 Transact-SQL 구문

RESTORE LOG 문을 사용하여 표시된 트랜잭션을 대상으로 지정하는 경우 다음 절 중 하나를 사용하여 표시에 또는 표시 바로 앞에 중지할 수 있습니다.

  • 표시된 트랜잭션을 복구 지점으로 지정하는 WITH STOPATMARK = '<mark_name>' 절을 사용합니다.

    STOPATMARK는 표시로 롤포워드하고 롤포워드에 표시된 트랜잭션을 포함합니다.

  • 표시 바로 앞에 있는 로그 레코드를 복구 지점으로 지정하는 WITH STOPBEFOREMARK = '<mark_name>' 절을 사용합니다.

    STOPBEFOREMARK는 표시로 롤포워드하고 롤포워드에서 표시된 트랜잭션을 제외시킵니다.

STOPATMARK 옵션과 STOPBEFOREMARK 옵션은 선택적으로 사용되는 AFTER datetime 절을 지원합니다. datetime 을 사용할 경우 표시 이름은 고유하지 않아도 됩니다.

AFTER datetime을 생략하면 지정된 이름의 첫 번째 표시에서 롤포워드가 중지됩니다. AFTER datetime을 지정하면 정확히 datetime에 또는 그 후에 지정한 이름이 있는 첫 번째 표시 지점에서 롤포워드가 중지됩니다.

참고 항목

모든 지정 시간 복원 작업에서처럼 데이터베이스에서 대량 로그 작업이 진행되는 동안 표시 지점으로 복구되지 않습니다.

표시된 트랜잭션 지점으로 복원하려면

데이터베이스를 표시된 트랜잭션으로 복원(SQL Server Management Studio)

RESTORE(Transact-SQL)

로그 백업 준비

이 예제에서 이러한 관련 데이터베이스에 대한 적절한 백업 전략은 다음과 같습니다.

  1. 두 데이터베이스에 대한 전체 복구 모델을 사용합니다.

  2. 각 데이터베이스의 전체 백업 생성

    데이터베이스는 순차적으로 또는 동시에 백업할 수 있습니다.

  3. 트랜잭션 로그를 백업하기 전에 모든 데이터베이스에서 실행되는 트랜잭션을 표시합니다. 표시된 트랜잭션을 만드는 방법에 대한 자세한 내용은 표시된 트랜잭션을 사용하여 관련 데이터베이스를 일관되게 복구(전체 복구 모델)를 참조하세요.

  4. 각 데이터베이스의 트랜잭션 로그를 백업합니다.

데이터베이스를 표시된 트랜잭션으로 복구

백업을 복원하려면

  1. 가능한 경우 손상되지 않은 데이터베이스의 비상 로그 백업을 만듭니다.

  2. 각 데이터베이스의 최신 전체 데이터베이스 백업을 복원합니다.

  3. 모든 트랜잭션 로그 백업에서 사용할 수 있는 가장 최근에 표시된 트랜잭션을 식별합니다. 이 정보는 각 서버의 msdb 데이터베이스에 있는 logmarkhistory 테이블에 저장됩니다.

  4. 이 표시를 포함하는 모든 관련 데이터베이스에 대한 로그 백업을 식별합니다.

  5. 각 로그 백업을 복원하여 표시된 트랜잭션에서 중지합니다.

  6. 각 데이터베이스를 복구합니다.

참고 항목

BEGIN TRANSACTION(Transact-SQL)
RESTORE(Transact-SQL)
트랜잭션 로그 백업 적용(SQL Server)
표시된 트랜잭션을 사용하여 관련 데이터베이스를 일관되게 복구(전체 복구 모델)
복원 및 복구 개요(SQL Server)
SQL Server 데이터베이스를 지정 시간으로 복원(전체 복구 모델)
복원 시퀀스 계획 및 수행(전체 복구 모델)