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.