SQL Server에서 데이터베이스를 복원 할 때 mdf 파일을 덮어 쓸 수 없음


21

나는 databse A를 얻었다. 그것에 약간의 데이터가있다. A의 백업을 A.bak 파일 로 만들었습니다 . 그런 다음 빈 데이터베이스 B를 새로 만든 다음 A.bak 에서 B를 복원하려고합니다 . 그러나 SQL 서버는 다음과 같은 오류를 알려줍니다.

'C : \ SQL Directory \ DATA \ A.mdf'파일을 덮어 쓸 수 없습니다. 데이터베이스 'A'에서 사용 중입니다.

그러나 SQL Server에서 A를 삭제하면 폐기가 정상입니다.

별도의 백업 파일 에서 복원하는 동안 SQL이 원래 데이터베이스 파일 에 기록해야하는 이유를 이해하지 못 합니까?

고마워 ~

답변:


19

데이터베이스를 복원하면 SQL Server는 기본적으로 모든 데이터 및 로그 파일을 원래 위치로 복원하려고 시도합니다. 이러한 원래 위치는 여전히 원래 데이터베이스 ( "A")에서 사용 중이므로 복원에 실패합니다. WITH MOVE 절을 사용하여 데이터베이스의 모든 파일에 대한 새 위치를 지정해야합니다.

RESTORE DATABASE B FROM DISK = 'A.bak'
WITH MOVE 'DataFileLogicalName' TO 'C:\SQL Directory\DATA\B.mdf',
MOVE 'LogFileLogicalName' TO 'C:\SQL Directory\DATA\B.ldf',
REPLACE --Needed if database B already exists

어쨌든 그런 것. 필요한 경우 백업에서 논리 파일 이름을 보려면 REFILE FILELISTONLY FROM DISK ...를 사용하십시오.


11

WITH MOVE/ MOVE는 올바른 솔루션입니다 T-SQL.

그건 그렇고, GUI를 사용하려면 파일 로 이동하여 이름을 바꿀 수 있습니다.

  • a. MDF
  • a. NDF
  • a. LDF

  • b. MDF
  • b.NDF
  • b. LDF

여기에 이미지 설명을 입력하십시오


1
또한 일반 탭에서 대상 데이터베이스 이름을 변경하면 GUI가 자동으로 다른 이름으로 복원 이름을 업데이트합니다.
Wouter

0

백업을 복원 할 때 복원 할 데이터 파일을 지정할 수 있습니다.

여기여기 . "데이터베이스 파일을 다른 이름으로 복원"옵션 및 "기존 데이터베이스 덮어 쓰기"플래그를 사용할 수 있습니다.


0

TSQL 명령에서 또는 선택된 확인란으로 REPLACE 옵션을 사용하고 있습니까? 또는 파일 이름을 바꾸고 데이터베이스를 다른 것으로 호출 할 수 있습니다.

또한 사용중인 데이터베이스를 복원하는 것이 약간 어렵다는 것을 알 수 있습니다. 데이터베이스를 사용하여 프로세스를 종료해야합니다. 또는 먼저 데이터베이스를 삭제 / 삭제하고 연결을 닫습니다 (아마도 가장 쉬운 방법 임). 또는 롤백을 통해 제한된 사용자 모드와 같이 덮어 쓰려는 데이터베이스를 즉시 설정하므로 DBA 만 사용할 수 있습니다. 또는 SQL Server를 중지했다가 다시 시작하면 누구나 데이터베이스를 사용하기 전에 복원 롤링을 얻을 수 있습니다.

PS는 만일을 대비하여 덮어 쓰려는 데이터베이스의 백업을 수행합니다.


0

이미 Options페이지를 사용하고 Overwrite the existing database (WITH REPLACE)옵션을 활성화 한 후 Management Studio의 GUI에서 솔루션을 검색하는 경우 :

Restore As열을 클릭 하고 *.mdf파일 및 *.ldf파일 의 파일 이름을 변경 하십시오.

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