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.