WITH REPLACE를 사용하여 백업을 복원하는 중 오류 3154


16

컴퓨터에 SQL 2012 SP1이 설치되어 있습니다. 나는 데이터베이스의 백업을 만들었습니다 test.bak.

이름 test2이 같은 데이터베이스 인 데이터베이스가 있지만 데이터가 변경되었습니다.

데이터베이스를 test.bak통해 복원하고 싶습니다 test2.

나는 항상 오류가 발생합니다 :

오류 3154 : 백업 세트에 기존 데이터베이스 이외의 데이터베이스 백업이 있습니다.

나는 시도했다 :

  1. 나는 오른쪽을 좋아했다 test2 -> Restore database -> From device

    선택 test.bak하고 확인 With Replace했지만 오류가 발생합니다.

  2. 그런 다음 마우스 오른쪽 버튼을 클릭하려고했습니다. test2 -> Restore file and filegroups

    선택 test.bak하고 확인 With Replace했지만 오류가 발생합니다.

기존 데이터베이스를 삭제 한 다음 올바른 이름으로 백업을 복원 할 수 있지만 SQL 2008을 사용하는 경우 기존 데이터베이스를 복원하는 데 문제가 없었습니다.

SQL2012를 사용하기 때문에이 오류가 많이 발생하는 것 같습니다!

답변:


12

WITH REPLACEManagement Studio에서는 포인트 앤 클릭 방식을 사용하고 일반적으로 사용하지 않아야합니다 . 융통성이없고 종종 버그가 있습니다.

이것은 나를 위해 일했다 :

USE [master];
GO

CREATE DATABASE test;
GO

CREATE DATABASE test2;
GO

BACKUP DATABASE test TO DISK = 'c:\temp\test.bak' WITH INIT, COMPRESSION;
GO

RESTORE DATABASE test2
  FROM DISK = 'c:\temp\test.bak'
  WITH REPLACE,
  MOVE 'test' TO 'c:\temp\test2.mdf',
  MOVE 'test_log' TO 'c:\temp\test2.ldf';

또한 사용중인 데이터베이스를 백업 할 때 WITH INIT및 / 또는 이미 백업이 포함 된 파일을 장치가 가리 키지 않도록해야합니다 (지금 백업하는 데이터베이스와 같지 않을 수 있으므로 특히 이름을 재사용하는 경우) test...).


@AaronBertrand fyi, 그 기능이 존재합니다. 내가 일반적으로하는 일은 UI를 사용하고 모든 것을 올바르게 작성하기 위해 스크립트를 작성하는 것입니다. 이 있는 많은 버그 네.
usr

2

1) 명령을 사용 WITH REPLACE하는 동안 사용하십시오 RESTORE.

2) DROP충돌하는 이전 데이터베이스이며 RESTORE명령을 사용하여 다시 복원하십시오 .

SQL Server 버전에는 문제가 없습니다. Aaron이 지적했듯이 2008 년에서 2012 년까지 데이터베이스와 동일한 버전도 복원 할 수 있습니다.


2

잘못된 데이터베이스를 복원하고 있습니다. " test2의 백업으로 복원"으로 생각하지 말고 test"내 백업을 복원 test하지만 이름을 test2"으로 바꾸십시오 . 복원 작업을 선택하고 "데이터베이스로 :"필드에 test넣을 수 있습니다 test2.

Aaron이 언급했듯이, 마법사에 의존하지 않고 스크립트를 배우십시오. 어디로 가고 있는지에 대해 더 명확합니다.


2

여전히이 작업을 수행 할 수 있지만 추가 단계가 필요합니다.

복원 대화 상자를 열고 2008 습관마다 평소에 선택하십시오. 원래 데이터베이스가 DB 인 경우 소스로 DB.bak 장치를 선택하고 대상 이름을 DBTest로 변경하십시오. 그런 다음 페이지 선택 (왼쪽 상단)에서 일반 / 파일 / 옵션이 보이는 곳에서 파일을 선택하십시오. 격자를보세요. 원본 파일 이름 및 파일 이름으로 복원 열이 표시됩니다. 후자를 수동으로 확장하고 새 이름을 입력하십시오 (데이터베이스의 원래 이름이 DB이고 DBTest를 작성하려는 경우 .... \ DB.mdf를 ... \ DBTest.mdf 등으로 변경하십시오).

그러면 DB 용 .bak 파일이 소스로, DBTest가 대상으로 수락됩니다. 옵션 페이지로 이동하여 바꿀 내용을 선택해야 할 수도 있습니다. 다른 이유로 인해이 옵션이 없으면 테스트 할 수 없습니다.


2

정답은 WITH REPLACE옵션 을 사용하는 것입니다.

WITH REPLACE차등 백업 (전체 백업없이)에서 복원하려고하면를 사용할 때도 질문에 오류가 발생할 수 있음을 지적하고 싶습니다 .


아마 내가이 답변시 주석에 충분한 포인트가 didnt가, 난 그냥 당신이 (전체 하나없이) 차등 백업에서 복원하려고하면 "로 대체"사용하는 경우에도 오류를 얻을 수 있음을 지적하고 싶었
Brimstedt

0

이것이 효과가 있기를 바랍니다.

  1. 파일을 복원 할 경로를 설정하면
  2. 왼쪽에서 "옵션"을 클릭하십시오.
  3. 확인란- "대상 데이터베이스에 대한 기존 연결 닫기"를 선택하십시오.
  4. 확인을 클릭하십시오. 여기에 이미지 설명을 입력하십시오

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