데이터베이스 복원을 삭제하는 방법


14

SQL Server 2008 R2와 함께 로그 전달을 실행하고 있습니다.

보조 데이터베이스 드라이브에 공간이 부족하여 로그 전달 트랜잭션 로그를 적용하지 않는 상황이 있습니다.

이 문제를 해결하는 방법은 보조 데이터베이스를 삭제하고 로그 전달을 처음부터 구성하는 것입니다.

내가 가진 문제는 보조 데이터베이스가 복원 상태에 있으며 삭제할 수 없다는 것입니다. 어떻게 진행할 수 있습니까?

예를 들어 오프라인으로 가져 오려고하면 오류가 발생합니다.

ALTER DATABASE is not permitted while the database is in the Restoring state.

복원 데이터베이스에서 alter 명령을 실행할 수 없으므로 삭제를 수행해야합니다.
— Jason Cumberland

답변:


25
RESTORE DATABASE dbname 
FROM DISK = 'dbname .bak'
WITH REPLACE, RECOVERY --force restore 

아니면 그냥

RESTORE DATABASE dbname WITH RECOVERY

REPLACE기존 데이터베이스 덮어 쓰기, 당신은 당신이 당신이 그것을 삭제하는 걱정 해달라고 언급 한 바와 같이 기존 데이터베이스를 무시 하시겠습니까 경우에만 그것을 할

RESTORE WITH RECOVERY는 커밋되지 않은 트랜잭션을 롤백하여 데이터베이스를 사용할 수있는 기본 동작입니다. 추가 트랜잭션 로그를 복원 할 수 없습니다.

데이터베이스를 온라인 상태로 만들어야합니다. 그런 다음 삭제하고 다시 시도하십시오.


나는 당신이 말하는 것이 효과가 있다고 생각합니다. 내 솔루션은 SQL 서비스를 다시 시작한 다음 데이터베이스를 삭제하는 것이 그 후에 효과가있었습니다.
— 피터

서비스가 꺼져있는 동안 트랜잭션 로그를 삭제하면 항상 새 로그가 생성됩니다. 최고
— AmmarR

3

이 문제를 해결하는 가장 좋은 방법은 'drop database [database name]'명령을 작성한 다음 동일한 이름으로 새 이름을 만든 다음 .bak 파일이 손상되었거나 결함이 있기 때문에 다른 .bak 파일에서 데이터베이스를 복원하는 것입니다.


손상된 백업에 대한 질문에는 언급이 없습니다.
— ypercubeᵀᴹ
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.