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


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.