SQL Server 데이터베이스가 복원 상태로 멈춤


79

Sharepoint 서버가 있습니다. 백업 도구에 문제가있어 이제 일부 데이터베이스가 복원 상태에 빠졌습니다!

데이터베이스 복원을 보여주는 이미지

복원 프로세스를 중지 할 수 있습니까? 또한 데이터베이스 무결성이 손상되지 않도록하려면 어떻게해야합니까?

답변:


129

이는 복원 스크립트가 WITH NORECOVERY매개 변수를 추가 하여 복원 후 트랜잭션 로그에 데이터베이스를 적용 할 수 있도록하기 때문일 수 있습니다.

데이터베이스가 이제 최신 트랜잭션 로그 파일을 기다리고 있습니다.

다음 중 하나를 수행 할 수 있습니다.

  1. RESTORE LOG database_name FROM backup_device WITH RECOVERY;...를 사용하여 최신 트랜잭션 로그를 적용하십시오.
  2. 데이터베이스를 다시 복원하지만 이번에는 ... WITH RECOVERY;... 또는
  3. 다음을 실행하여 데이터베이스를 복원 모드에서 강제 종료하십시오. RESTORE DATABASE YourDb WITH RECOVERY;

이 작업을 수행하기 전에 이러한 옵션의 의미를 이해해야합니다. 주의하지 않으면 데이터가 손실 될 수 있습니다.

자세한 내용은 다음을 참조하십시오.


그래도 작동하지 않으면 dba.stackexchange.com/questions/11175/…를 참조하십시오. 다시 한 번, 수행중인 작업을 모르고 데이터 손실의 전체 위험을 이해하면 DOOM의 경고가 많이 발생합니다. 그러나 비 프로덕션 서버에서 바인드하는 경우 새로 복원 할 수있는 좋은 백업이 있으며 해당 서버에서 SQL을 다시 시작할 여유가 있습니다.
— NateJ

6
"RESTORE DATABASE YourDb WITH RECOVERY"를 실행하여 데이터베이스를 복원 모드에서 강제 종료하십시오. 20 분 동안 머리를 긁고 다시 시작한 다음 하나의 라이너로 고정합니다. 감사!
— Echilon

2
나는 dev 상자와 같은 상황에 갇혀 있었다. 옵션 3은 매력처럼 작동했습니다!
— Moiz Tankiwala

.bak에서 새 DB 로 DB를 복원하려고 시도했지만 디스크에서 파일 이름을 변경하는 것을 잊었습니다. 파일이 기존 데이터베이스에서 사용 중이 아니었지만 다른 오류로 인해 복원에 실패했습니다. 이로 인해 기존 DB가 엉망이되었습니다 (복원 상태에서 멈춤). # 3 잠시 후 온라인 상태로 되돌리고 모든 데이터가 제대로 표시되는지 확인하십시오. 감사!
— CoDEmanX

44

이 문제를 해결하기위한 간단한 T-SQL 스크립트 :

새 쿼리 창에이 스크립트를 작성하고 다음을 실행하십시오.

RESTORE DATABASE [DataBase Name] WITH RECOVERY;

RECOVERY와 함께 데이터베이스 복원 [database_name] .... 나에게 완벽하게 작동했습니다. 감사합니다!

10
그 의미를 이해하기 위해 매우주의하십시오. DB가 로그 복원을 기다리는 경우 상당한 데이터 손실이 발생할 수 있습니다.
— David Spillett

2
"로그가 복원되지 않아서 데이터베이스를 복구 할 수 없습니다."
— Ian Boyd

0

방금 이런 상황이 있었고 치료법은 매우 놀랍습니다.

ALTER DATABASE DBName SET ONLINE;

분명히 고장난 NetBackup 복원은 이상한 상태로 남았습니다. 다른 솔루션은 작동하지 않았습니다 (아직 SQL Server 서비스를 다시 시작하지는 않았지만)

이론적으로 복원이 시작되면 실패하면 데이터가 손상되었을 수 있으므로 데이터베이스에주의를 기울여야합니다. 어쨌든 데이터베이스를 다시 복원하려고하므로 중요하지 않습니다.


이 질문에 대한 정답은 "Restoring"Online에있는 데이터베이스를 설정하려고하면 "데이터베이스가 복원 중 상태 인 동안 ALTER DATABASE를 사용할 수 없습니다"라는 오류가 표시됩니다.
— 제임스 젠킨스

StackOverflow 사용 방법에 익숙하지 않을 수도 있습니다. 때로는 게시 된 것과 약간 다른 질문에 답변하기도합니다. 사람들은 종종 온라인 검색 후 비슷한 질문을하기 때문에 가치를 제공합니다. 대한 사실적 주장에 대해서는 ALTER DATABASE허용되지 않는, 내 경우, 데이터베이스 상태를 회복하기로 보여주는 사실이었다 당신을 확신하고, 사용 SET ONLINE사실은 했다 . 그러니 당신이 나를 잘못 생각하거나 거짓말한다고 부르십시오. 대안이있을 때 실제로해야 할 일입니까?
— ErikE

@JamesJenkins 그리고 그 대안은 무엇입니까? 대안은 데이터베이스가 상태 복원에서 표시 할 수 있지만 실제로는 복원되지 않는다는 가설입니다. 또는 복원의 마지막 단계에있을 수 있으며 실제로 복원이 완료되어 실제로 ONLINE상태 로 설정 될 수 있습니다 . 짧은 이야기로, 귀하의 의견과 공감대가이 사이트와 일치하지 않으며 귀하의 정보는 내가 제시 한 데이터로 제대로 검증되지 않았기 때문에 사실 부정확합니다.
— ErikE

0

아시다시피 기본 데이터베이스 복원 옵션은 복구 기능으로 데이터베이스를 사용할 수 있고 데이터베이스 복원이 완료된 후 온라인으로 사용할 수 있습니다.

예:

RESTORE DATABASE YourDB FROM DISK= 'C:\\Data\\YourDBBackup.bak'
WITH RECOVERY
GO

NO Recovery with Restore에 대한 중요한 사항을 살펴 보겠습니다

  • 데이터베이스를 사용할 수 없습니다
  • 복원 모드로 유지
  • 다음 복원 순서를 수행 할 수 있습니다
  • 커밋되지 않은 트랜잭션을 롤백하지 않습니다

복구하지 않고 복원

이 옵션은 특히 여러 백업을 복원 할 때 사용됩니다. 즉, norecovery 옵션과 함께 restore 명령을 실행하면 마지막 백업 순서가 복원 될 때까지 데이터베이스가 사용자에게 해제되지 않습니다. 마지막 백업에서는 복구 옵션이 사용되며 데이터베이스는 온라인 상태가됩니다.

예:

RESTORE DATABASE YourDB FROM DISK - 'C:\\Data\\Backup_part1.bak' 
WITH NORECOVERY
GO

그리고:

RESTORE LOG YourDB FROM DISK = 'C:\\Data\\BackupLog-part2.trn'
WITH RECOVERY
GO

1
답에 오타가있을 수 있습니다. 복구로 복원에 관하여 ... 표시된 섹션 에는 옵션에 적용되는 모든 옵션이 나열됩니다 RESTORE ...WITH NORECOVERY. 다시 확인해 주시겠습니까?
— hot2use
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.