SQL Server 2012에서 로그 전달-대기 상태로 복원-계속


10

RESTORE WITH STANDBY보고 목적으로 데이터베이스를 읽기 전용 모드로 복원하기 위해 로그 전달 및 SQL Server 2012를 사용하고 있습니다. 그러나 하나 또는 두 개의 로그 백업 복원을 완료 한 후 로그 전달 설정이 계속 중단됩니다. 로그 전달은 다음과 같이 실행될 때만 중단됩니다 RESTORE WITH STANDBY. RESTORE WITH NORECOVERY문제를 일으키지 않습니다.

이것에 대한 나의 직감은 primary database가 그렇게 동적 인 것이 아니라는 것입니다. 따라서 거래가 없을 때 RESTORE프로세스에 문제가 발생할 수 있습니다.

어떤 아이디어, 알려진 수정?

두 테이블에서 많은 업데이트를 수행하는 정규 작업을 실행하여 며칠 동안 작동했습니다. 작업이 로그 전달 설정 실행을 중지하면 .trn 파일을 처리 할 수 ​​없습니다. 로그 전달을 재설정하고 작은 업데이트를 수행하여 테이블에서 한 레코드의 한 열의 값을 변경하여 여전히 실패했는지 여부를 확인하려고 시도했습니다.

모든 답변에 감사드립니다.

추신 : 로그에서 발췌

02/25/2013 13 : 00 : 00, LSRestore_DBDB01-A_BulldogDB, 진행 중, 1, DBREPORTS, LSRestore_DBDB01-A_BulldogDB, 로그 전달 복원 로그 작업 단계. ,, 2013-02-25 13 : 00 : 12.31 *** 오류 : 로그 백업 파일 '\\ dbsan01 \ DBBackups \ LSBackup_BulldogDB \ BulldogDB_20130225180000.trn'을 보조 데이터베이스 'BulldogDB'에 적용 할 수 없습니다. (Microsoft.SqlServer.Management.LogShipping) ***
*** 오류 : 데이터베이스 'BulldogDB'에 대한 로그를 처리하는 동안 오류가 발생했습니다. 가능하면 백업에서 복원하십시오. 백업을 사용할 수없는 경우 로그를 다시 작성해야합니다.
복구 중에 오류가 발생하여 데이터베이스 'BulldogDB'(8 : 0)가 다시 시작되지 않습니다. 복구 오류를 진단하고 수정하거나 알려진 양호한 백업에서 복원하십시오. 오류가 수정되거나 예상되지 않으면 기술 지원 부서에 문의하십시오.
복원 로그가 비정상적으로 종료됩니다.
파일 1에서 데이터베이스 'BulldogDB'파일 'BulldogDB'에 대해 0 페이지를 처리했습니다.
파일 1에서 데이터베이스 'BulldogDB'파일 'BulldogDB_log'에 대해 1 페이지를 처리했습니다. (. Net SqlClient Data Provider) ***
*** 오류 : 기록 / 오류 메시지를 기록 할 수 없습니다. (Microsoft.SqlServer.Management.LogShipping) ***
*** 오류 : ExecuteNonQuery에는 열려 있고 사용 가능한 연결이 필요합니다. 연결의 현재 상태가 닫힙니다. (System.Data) ***
파일을 확인할 수 없기 때문에 보조 데이터베이스 'BulldogDB'에 대한 로그 백업 파일 '\\ dbsan01 \ DBBackups \ LSBackup_BulldogDB \ BulldogDB_20130225180000.trn'을 건너 뛰는 중 2013-02-25 13 : 00 : 12.32
*** 오류 : 기록 / 오류 메시지를 기록 할 수 없습니다. (Microsoft.SqlServer.Management.LogShipping) ***
*** 오류 : ExecuteNonQuery에는 열려 있고 사용 가능한 연결이 필요합니다. 연결의 현재 상태가 닫힙니다. (System.Data) ***
*** 오류 : 데이터베이스 액세스 모드를 복원하는 중 오류가 발생했습니다 (Microsoft.SqlServer.Management.LogShipping) ***
*** 오류 : ExecuteScalar에는 열려 있고 사용 가능한 연결이 필요합니다. 연결의 현재 상태가 닫힙니다. (System.Data) ***
*** 오류 : 기록 / 오류 메시지를 기록 할 수 없습니다. (Microsoft.SqlServer.Management.LogShipping) ***
*** 오류 : ExecuteNonQuery에는 열려 있고 사용 가능한 연결이 필요합니다. 연결의 현재 상태가 닫힙니다. (System.Data) ***
*** 오류 : 데이터베이스 액세스 모드를 복원하는 중 오류가 발생했습니다 (Microsoft.SqlServer.Management.LogShipping) ***
*** 오류 : ExecuteScalar에는 열려 있고 사용 가능한 연결이 필요합니다. 연결의 현재 상태가 닫힙니다. (System.Data) ***
*** 오류 : 기록 / 오류 메시지를 기록 할 수 없습니다. (Microsoft.SqlServer.Management.LogShipping) ***
*** 오류 : ExecuteNonQuery에는 열려 있고 사용 가능한 연결이 필요합니다. 연결의 현재 상태가 닫힙니다. (System.Data) ***
2013-02-25 13 : 00 : 12.33 이전 로그 백업 파일을 삭제합니다. 기본 데이터베이스 : 'BulldogDB'
*** 오류 : 기록 / 오류 메시지를 기록 할 수 없습니다. (Microsoft.SqlServer.Management.LogShipping) ***
*** 오류 : ExecuteNonQuery에는 열려 있고 사용 가능한 연결이 필요합니다. 연결의 현재 상태가 닫힙니다. (System.Data) ***, 00 : 00 : 12,0,0 ,,,, 0

LS_Restore 작업이 트랜잭션 로그 백업을 적용 할 수 없다는 점에서 문제가 있습니다. 모든 오류 로그 정보가 데이터베이스에서 사라지도록 로그 전달을 재설정했습니다. 어딘가에 저장 했으므로 찾을 수있을 때 게시하겠습니다. 감사.
Mendel

파일을 확인할 수 없기 때문에 "보조 데이터베이스 'DB'에 대한 로그 백업 파일 건너 뛰기 ... .trn과 같은 것을 얻습니다 . 손상 여부를 구체적으로 확인하는 방법을 모르겠습니다.
Mendel

답변:


4

보조 데이터베이스가 NORECOVERY 상태 일 때 로그 백업을 복원 할 수 있고 READ-ONLY / STANDBY 상태 일 때만 실패하면 로그 백업 자체가 정상이며 손상되지 않은 것으로 가정합니다.

보고 구성 요소가 데이터베이스에 열려있는 연결 일 수 있으므로 로그 파일을 복원 할 때 열린 연결로 인해 데이터베이스에 대한 독점 연결을 얻을 수 없습니다. 로그 전달을 설정하면 연결을 끊어 로그 백업을 복원 할 수있는 옵션이 있습니다.


1
맞습니다. 이 문제를 해결하려면 로그 쉽 작업을 대기 상태로 복원하지 말고 대기 상태로 복원 할 작업에 두 번째 단계를 추가하십시오. STANDBY = N'standbyfile '인 데이터베이스 [데이터베이스]를 복원하십시오. 또 다른 옵션은 트랜잭션 로그 백업이 완료되지 않은 것입니다. 복원에 20 분 지연을 추가하십시오
Spörri

1

대기 2 차 복원은 작업을 시작할 때 사용자를 연결 해제 한 후에 만 ​​연결을 끊습니다. 그러면 "독점 액세스"에 대한 오류로 복원 프로세스가 중지됩니다. 복원하는 동안 대기 데이터베이스에 연결하려고하는 서비스가 있습니다. 1-10 / 100 복원 된 파일 이후 복원 프로세스가 중단되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.