백업 세트는 기존 이외의 데이터베이스 백업을 보유합니다.


485

데이터베이스의 SQL Server 백업 파일을 복원하려고하는데 다음과 같이 오류가 발생합니다.

백업 세트는 기존 이외의 데이터베이스 백업을 보유합니다.

SQL Server 2008의 내 데이터베이스와 백업 파일은 2005입니다.

무엇이 문제가 될 수 있습니까?


95
아래에서 투표율이 높은 답은 너트를 깨는 망치입니다. 문제는 복원> 옵션 창 에서 " 기존 데이터베이스 덮어 쓰기 (WITH REPLACE) "옵션을 선택하지 않았을 가능성이 큽니다 . 을 사용하여 명령 줄 에서이 문제가 있었고 를 사용하여 수정했습니다 . WITH MOVEWITH REPLACE, MOVE
James McCormack

내 데이터베이스 중 하나에 동일한 오류가 있지만 SQL Server 에이전트가 꺼져있을 때만 가능합니다. 전원을 켜면 오류가 없으며 문제없이 복원 할 수 있습니다. 내 BAK 파일에는 단일 데이터베이스 만 포함되며 해당 데이터베이스 이름 (및 논리 파일 이름)은 서버에서 고유합니다.
개발자 웹

답변:


807

나도이 문제를 만났다.

해결책 :

  • 빈 데이터베이스를 작성하지 말고 .bak파일을 복원하십시오 .
  • SQL Server Management Studio의 "데이터베이스"분기를 마우스 오른쪽 단추로 클릭하여 액세스 할 수있는 '데이터베이스 복원' 옵션을 사용 하고 복원 할 소스를 제공하면서 데이터베이스 이름을 제공하십시오.
  • 다른 데이터베이스가 여전히 존재하는 경우 "파일"에서 파일 이름을 변경하십시오. 그렇지 않으면 "파일 '...'을 (를) 덮어 쓸 수 없습니다. 데이터베이스 'yourFirstDb'에서 사용 중입니다."가 표시됩니다.

102
오류가 발생하면 SSMS가이를 알려주기 매우 쉽습니다.
cja

16
" 빈 데이터베이스를 작성하지 말고 .bak 파일을 복원하십시오 "는 +1입니다 ... 예, 해결합니다. (그러나 왜 내가 다른 일을 할 때 마다이 문제가 발생하지 않았습니까? 그리고 우리는 처음에 미리 설명 할 수없는 다른 오류 메시지에 대한 해결 방법으로 시작하지 않았 습니까? :])
등록 편집

백업을 성공적으로 복원하는 데 필요한 조언 이었으므로 누군가 대답으로 표시해야합니다.
Doreen

2
데이터베이스 복원에서는 데이터, 로그 파일의 원래 이름이 그대로 있으므로 파일, 다른 이름으로 복원 및 고유 한 파일 이름을 입력했습니다.
Dave Mateer

2
다른 데이터베이스가 여전히 존재하는 경우 "파일"에서 파일 이름을 변경하십시오. 그렇지 않으면 " '...'파일을 덮어 쓸 수 없습니다. 'yourFirstDb'데이터베이스에서 사용 중입니다."
Verena Haunschmid

175

어느 한 쪽:

1) 명령을 사용 WITH REPLACE하는 동안 사용하십시오 RESTORE(GUI를 사용하는 경우 옵션-> 기존 데이터베이스 겹쳐 쓰기 ( WITH REPLACE)에 있음).

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

자세한 내용 은 링크 를 확인 하십시오.


1
링크에서 복사 및 링크 제공 .. * sigh * (스마트)
Abhijeetchindhe

4
@Abhijeetchindhe haha ​​.. 재사용 및 예의 .. :)
Amarnath

:) 정직한 소프트웨어 당신은! 어쨌든, 그것은이 질문에 대한 최고의 답변입니다. 그리고 당신이 그것을 찾기 위해 꺼내 시간 동안 투표 :)
Abhijeetchindhe

1
op와 동일한 문제가 있었으며이 답변은 제대로 작동합니다. +1
Esteban

1
이 WITH REPLACE 옵션도 필요한 솔루션이었습니다. 감사!
Adam

90

먼저 같은 이름의 빈 데이터베이스를 만듭니다. 그런 다음 복원 옵션으로 이동하십시오.

아래 옵션 의 왼쪽 창에서 선택하는 것을 잊지 마세요

  • 기존 데이터베이스 덮어 쓰기
  • 복제 설정 유지

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

그게 다야


51

SSMS 2014를 사용하여 동일한 문제에 직면하여 해결책을 찾았습니다.

-옵션을 선택하면 기존 데이터베이스 덮어 쓰기 (WITH REPLACE) 

기존 데이터베이스> 작업> 복원> 데이터베이스


34
USE [master];
GO

CREATE DATABASE db;
GO

CREATE DATABASE db2;
GO

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

RESTORE DATABASE db2
  FROM DISK = 'c:\temp\db.bak'
  WITH REPLACE,
  MOVE 'db' TO 'c:\temp\db2.mdf',
  MOVE 'db_log' TO 'c:\temp\db2.ldf';

33

간단한 3 단계 :

1- 데이터베이스 → 작업 → 복원 → 데이터베이스를 마우스 오른쪽 버튼으로 클릭하십시오.

2- Device소스로 확인 하고 .bak (또는 압축 된 .bak) 파일을 찾습니다

3- 왼쪽 창에서을 클릭 options하고 다음을 수행 하십시오 .

  • 기존 데이터베이스 덮어 쓰기를 확인하십시오 .
  • 복원하기 전에 테일 로그 백업 수행을 선택 취소 하십시오.
  • 대상 데이터베이스에 대한 기존 연결 닫기를 선택 하십시오 .

다른 옵션은 실제로 선택 사항입니다 (물론 중요합니다)!


23

원본 의 .mdf.ldf파일 이 Db있을 수 있으며이 c:\programFile\....정보가 백업에 저장 되었기 때문입니다 .

설치가있는 다른 SQL Server에서 동일한 DB를 작성하면 c:\program Files (x86)\ ....평소대로 복원 할 수 없습니다. .mdf.ldf파일 의 경로를 재배치해야합니다 .

따라서:

  • 새 서버에서 빈 DB를 만듭니다.

  • 비어있는 Db> 작업> 복원> 데이터베이스를 마우스 오른쪽 단추로 클릭하고 장치를 클릭 한 다음 .bak파일을 선택하고 Db를 선택하여 복원하십시오.

  • 왼쪽의 파일을 클릭하고 "모든 파일을 폴더로 재배치"를 선택하십시오.
  • 왼쪽 사이트에서 옵션을 클릭하고 덮어 쓰기를 클릭하십시오.

끝난!
그것이 도움이되기를 바랍니다!


16

나는 오늘 비슷한 문제에 부딪쳤다. 위의 모든 솔루션을 시도했지만 작동하지 않았습니다. 그래서 내 솔루션을 여기에 게시하십시오.

복원하기 전에 Tail-long Backup을 선택 취소하는 것을 잊지 마십시오

복원하기 전에 Tail-long Backup을 선택 취소하는 것을 잊지 마십시오

그것이 다른 사람들도 도울 수 있기를 바랍니다!


이것이 나를 위해 일한 것입니다. 감사!
Bill Norman

16

스크립트 접근 방식을 사용 중이고 LDF 및 MDF 파일과 관련된 오류가있는 경우 먼저 다음을 사용하여 백업 세트에서 파일 의 논리적 이름 (및 기타 세부 사항)에 대해 백업 파일조회 할 수 있습니다 .

-- Queries the backup file for the file list in backup set, where Type denotes 
-- type of file. Can be L,D,F or S
-- info: https://docs.microsoft.com/en-us/sql/t-sql/statements/restore-statements-filelistonly-transact-sql
RESTORE FILELISTONLY FROM DISK = 'C:\Temp\DB_backup.bak'
GO

다음과 유사한 결과가 나타납니다.

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

그런 다음 쿼리에서 해당 논리적 이름을 사용할 수 있습니다.

    -- Script assumes you want MDF and LDF files restored on separate drives. Modify for your scenario
    RESTORE DATABASE DB 
    FROM DISK='C:\Temp\DB_backup.bak'
    WITH REPLACE,
      MOVE 'DB' TO 'E:\MSSQL\Data\DB.mdf', -- "DB" is the mdf logical name from query above
      MOVE 'DB_log' TO 'F:\MSSQL\Logs\DB.ldf'; -- "DB_log" is LDF logical name from query above

자세한 내용 RESTORE FILELISTONLY 은 SQL Server 문서에서 찾을 수 있습니다 .


질문에 동일한 문제가 있었고 내 경우에는 Db 백업이 원격 서버에서 왔으며 첫 번째 쿼리의 출력과 유사한 D 드라이브에 동일한 폴더 구조를 만들어야했습니다. 그런 다음 두 번째 쿼리가 올바르게 작동하고 데이터베이스가 복원되었습니다.
rinilnath

11

또한 데이터베이스 이름 은 복원하려는 백업 의 데이터베이스 이름과 일치 해야 합니다 . 일치하지 않으면 동일한 오류가 발생합니다.


여러 파일 / 파일 그룹과 분할 된 테이블이있는 경우 특히 그렇습니다.
AlexC

9

다른 작업을 수행하기 전에 백업이 전체 또는 차등인지 확인하십시오. 차등 백업에서 새 데이터베이스를 만들려고하면 무엇을 하든지 오류가 발생합니다.


1
이것은 내가 겪고있는 문제 였으므로 이것에 감사드립니다 !!! (백업 파일이 실제로 차등 백업인지는 몰랐습니다.) 확인 방법은 다음과 같습니다. "DISK HEADRONLY FROM DISK = 'C : \ myfile.bak'"결과에서 BackupType of 1 = Full 백업입니다. BackupType of 5 = 차등 백업.
Wimpie Ratte

9

system.data.sqlclient.sqlerror : 백업 세트에 기존 'Dbname'데이터베이스 이외의 데이터베이스 백업이 있습니다.

나는 영혼을 찾기 위해왔다

  1. 이름이 같거나 다른 데이터베이스 이름으로 데이터베이스를 만들지 마십시오! 중요.

  2. 데이터베이스를 마우스 오른쪽 단추로 클릭하십시오 | 작업> 복원> 데이터베이스

  3. "복원 소스"에서 "장치에서"를 선택하십시오.

  4. .bak 파일을 선택하십시오

  5. 아래의 그리드 뷰에서 데이터베이스의 확인란을 선택하십시오.

  6. 데이터베이스에 : "여기에 새 데이터베이스 이름을 입력 할 수 있습니다"(예 : DemoDB)

  7. DropDownlist에서 기존 데이터베이스를 선택하지 마십시오

  8. 이제 Ok 버튼을 클릭하면 새로운 Databse가 생성되고 .bak 파일의 모든 데이터가 복원됩니다.

이 링크에서도 도움을받을 수 있습니다

문제를 해결하는 데 도움이되기를 바랍니다 ...


1
"같은 이름이나 다른 데이터베이스 이름을 가진 데이터베이스를 만들지 마십시오! 중요." 무슨 소리 야?
sajid

6

버전 비 호환성으로 인해 항상 발생합니다. 다음 단계를 따라 해결하십시오.

1 단계 : 원하는 이름으로 데이터베이스를 작성하십시오. (우리의 경우 AdventureWorks)

2 단계 : 데이터베이스를 클릭하고 작업 >> 복원 >> 데이터베이스…를 클릭하십시오.

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

3 단계 : 복원 화면에서 세 번째 옵션 선택으로 이동합니다. 이제“기존 데이터베이스 덮어 쓰기 (WITH REPLACE)”확인란을 선택하십시오.

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

4 단계 : 확인을 클릭하십시오. 데이터베이스를 성공적으로 복원해야합니다.

참고 : REPLACE를 사용하여 데이터베이스를 복원하면 이전 데이터베이스를 덮어 씁니다.


노력해 주셔서 감사합니다 ..하지만 GUI 대신 쿼리를 사용하고 있습니다.
Pugal

5

나에게도 같은 문제가 있습니다.

  1. 데이터베이스를 마우스 오른쪽 버튼으로 클릭하십시오.
  2. 작업을 선택하고 데이터베이스 복원을 선택하십시오.
  3. 왼쪽에서 옵션을 클릭하십시오.
  4. 첫 번째 옵션 기존 데이터베이스 덮어 쓰기 (WITH REPLACE)를 확인하십시오.
  5. 일반으로 이동하여 소스 및 대상 데이터베이스를 선택하십시오.
  6. 확인을 클릭하십시오.

3

방금이 문제를 해결하려고했습니다.

관리자로 실행하는 것부터 여기 및 다른 곳에서 찾은 제안에 이르기까지 모든 것을 시도했습니다. 결국 나를 위해 해결 한 것은 파일 속성 탭에서 "파일 재배치"옵션을 확인하는 것이 었습니다.

잘하면 이것은 다른 누군가를 돕습니다.


3

테스트를 위해 로컬에 새 DB를 만들어야했고 제품에서 백업했습니다. 먼저 db를 만들고 새 db 위에 BAK를 실행하려고 했는데이 오류가 발생했습니다. 복원 화면 자체에서 새 db 이름을 소싱하면서 db를 삭제하고 복원했습니다. 복원시 db가 자동으로 작성되었습니다.


3

여러분 중 일부는 이것을 지나치게 복잡하게했습니다. 나는 이것이 매우 간단하다는 것을 알았습니다.

1) .bak 파일 데이터베이스 이름과 같은 이름으로 데이터베이스를 만드십시오!

2) 데이터베이스를 마우스 오른쪽 단추로 클릭하십시오 | 작업> 복원> 데이터베이스

3) "복원 소스"에서 "장치에서"를 선택하십시오.

4) .bak 파일을 선택하십시오

5) 아래 표에서 데이터베이스의 확인란을 선택하십시오.

6) 오른쪽의 "페이지 선택"에서 "옵션"을 선택하십시오.

7) "복제 설정 유지 (KEEP_REPLICATION) 확인란을 선택하십시오.

이제 일반 페이지로 돌아가서 확인을 클릭하여 데이터베이스를 복원하십시오.


"페이지 선택"은 어디에 있습니까?
KansaiRobot

2

스크립트 생성을 사용하여 다른 방법으로 작업을 완료했습니다. Backup-Restore가 동일한 오류로 인해 문제를 해결하는 데 도움이되지 않았기 때문에 저에게 효과적이었습니다.


2

옵션에서 "다른 이름으로 복원"파일 이름을 새 데이터베이스 mdf 및 ldf로 변경하십시오. 소스 데이터베이스 .mdf 및 .ldf 파일을 참조합니다.


1

새 DB로 복원하고 파일 이름 구문을 확인할 수 있습니다. 새 SQL 버전의 경우 "_log"접미사가 로그 파일에 있습니다.

옵션 탭에서 기존 데이터베이스 플래그를 덮어 씁니다.

파비오


0

이 문제가 파일 및 폴더 권한과 관련이 있는지 확인하십시오.


0

프로덕션 서버를 동일한 서버의 준비 데이터베이스로 복원하려고했습니다.

내 경우에 효과가 있었던 유일한 것은 새로운 빈 데이터베이스로 복원하는 것입니다. 이것은 훌륭하게 작동했으며 프로덕션 파일을 덮어 쓰려고 시도하지 않았습니다. 프로덕션 백업 파일을 기존 준비 데이터베이스로 복원하는 경우와 같습니다. 그런 다음 오래된 데이터베이스를 삭제하고 이름을 바꿉니다. 파일은 새 임시 이름을 유지하지만 제 경우에는 괜찮습니다.

또는 그렇지 않으면 준비 데이터베이스를 먼저 삭제 한 다음 준비 데이터베이스와 이름이 같은 새 데이터베이스로 복원 할 수 있습니다.


0

데이터베이스 복원 을 클릭하는 대신 파일 및 파일 그룹 복원을 클릭하십시오 .

그게 내 SQL 서버에서 작동합니다.


0

이를 통해 시스템 드라이브에서 백업 파일을 가져올 수있었습니다

  1. .bak 파일 데이터베이스 이름과 동일한 이름 (바람직하게는)을 사용하여 데이터베이스를 만듭니다.
  2. 데이터베이스> 태스크> 복원> 데이터베이스를 마우스 오른쪽 단추로 클릭하십시오.
  3. "복원 소스"에서 "장치에서"를 선택하십시오.
  4. 시스템에서 경로를 선택하여 .bak 파일을 선택하십시오.
  5. 아래 목록 상자에서 데이터베이스의 확인란을 선택하십시오.
  6. 오른쪽의 "페이지 선택"에서 "옵션"을 선택하십시오.
  7. "복제 설정 유지 (KEEP_REPLICATION) 확인란을 선택하십시오.
  8. 기존 데이터베이스 덮어 쓰기 (WITH REPLACE) 확인란을 선택하십시오. 이제 일반 페이지로 돌아가서 확인을 클릭하여 데이터베이스를 복원하십시오.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.