SQL Server에서 백업을 복원하면 오류가 발생합니다


15

prod (Windows Server 2003의 SQL Server 2000)로 이동해야하는 데이터베이스 (Windows Server 2008의 SQL Server 2005)가 있습니다. 내 프로세스는 다음과 같습니다.

  1. dev에 로그인하여 SQL Server Management Studio를 엽니 다.
  2. 데이터베이스를 마우스 오른쪽 버튼으로 클릭하십시오 | 작업 | 지원. 모든 기본 옵션 유지 (전체 백업 등)
  3. .bak 파일을 로컬로 prod (네트워크 드라이브 없음)로 이동하고 prod에 로그인 한 후 SQL Server Enterprise Manager를 엽니 다.
  4. 데이터베이스 노드를 마우스 오른쪽 단추로 클릭 | 모든 작업 | 데이터베이스를 복원하십시오.
  5. 동일한 데이터베이스 이름을 반영하도록 데이터베이스로 복원을 변경하십시오.
  6. '장치에서'라디오 단추를 클릭하십시오. '장치 선택'을 클릭하십시오
  7. 다음에서 복원 : 추가 ...를 클릭하고 .bak 파일 (작은 파일-6MB)을 찾습니다.

이제 데이터베이스를 복원 할 준비가되었으므로 확인을 클릭하고 다음 오류가 발생합니다.

" 'E : ... bak'장치의 미디어 패밀리가 잘못 구성되었습니다. SQL Server가이 미디어 패밀리를 처리 할 수 ​​없습니다. RESTORE DATABASE가 비정상적으로 종료되었습니다."

이 오류는 즉각적입니다.

나는 다른 db 이름과 로그 파일 이름 (원산지)을 사용하여 db를 dev 컴퓨터로 복원하고 이전에 파일과 동일한 물리적 경로를 가진 빈 데이터베이스를 생성하고 복원하려고 시도하면서 몇 가지 변형을 시도했습니다. 몇 가지 다른 .bak 파일을 만들어서 prod에 업로드하기 전에 파일이 확인되어 있는지 확인하십시오. 파일 자체는 존재하지 않지만 .mdf 및 .ldf 파일의 디렉토리는 prod에 존재한다는 사실을 알고 있습니다. 확인을 클릭하여 복원하기 전에 옵션 탭으로 이동하면 다음 오류가 발생합니다.

오류 3241 : 'E : ... bak'장치의 미디어 제품군이 잘못 구성되었습니다. SQL Server는이 미디어 제품군을 처리 할 수 ​​없습니다. 파일 저장 복원이 비정상적으로 종료되었습니다.

누구든지 밝은 아이디어가 있습니까?


나는 이것에 하루를 보냈고 내 시간을 낭비했다는 것에 동의합니다. 제 경우에는 2k8 R2에서 2k5까지의 하위 호환성 문제처럼 보입니다.

답변:


7

MSSQL2008의 백업 헤더는 문제의 원인 일 수있는 MSSQL2005의 백업 헤더와 다릅니다. 백업 복원 패러다임 대신 DB를 내보내거나 DEV 서버에서 MSSQL2008을 설정하십시오.


4

Mike Dimmick이 말했듯이-SQL 2000은 SQL 2005 백업을 인식하지 못합니다 (Word 2000은 2007의 DOCX 파일을 인식하지 못합니다). 따라서 SQL 스크립트와 같이 낮은 공통 분모 형식으로 데이터를 마이그레이션해야합니다. 스키마 및 데이터에 대한 단일 SQL 파일을 생성하는 SQL Server 호스팅 툴킷 의 일부인 데이터베이스 게시 마법사 를 사용해보십시오 .


1
SqlExpress가 설치되어 있는지 확인해야합니다 (실제로 설치하지 않았을 수 있음). 실수로 SqlExpress에 로그인 한 다음 2008 데이터베이스를 복원 할 수 없기 때문에 패닉이 매우 쉽습니다. 이 오류가 발생하는 가장 일반적인 이유 일 수 있습니다.
Simon

2

SQL Server 제품군 (예 : 2000에서 2005 또는 2008)으로 백업을 이동할 수 있지만 뒤로는 이동할 수 없습니다. SQL Server 2000에서 SQL Server 2005 백업을 복원 할 수 없습니다.


1

복원하려고 할 때 파일이 작성되지 않도록하는 권한 문제 일 수 있습니다. 원하는 동일한 이름으로 대상에 새 데이터베이스를 생성 한 다음 그 위에 복원하십시오.

또한 외부 하드 드라이브 또는 네트워크 공유에서 백업을 복원하려는 경우 복원을 시도하기 전에 백업 파일을 로컬 시스템으로 복사하십시오.


1

기본적으로 SQL Server 2005에는 두 개의 개체 탐색기가 있습니다. server / sqlexpress 개체를 사용하고 있다고 생각합니다. 다른 것으로 복원 해보십시오.


1

(안심 해.) Ahhhhh, 그게 문제 야.

원격 PC에서 SQL Server 2008 SP1을 실행하고 있습니다. 데이터베이스를 백업했지만 .bak 파일에서 복원 할 로컬 SQL Server 2008 복사본을 가져올 수 없습니다 .

[Yini]가 말했듯이 이것은 SQL Server 2008 인스턴스가 아니라 로컬 PC에서 SQL Server 2005 인스턴스를 여는 SQL Server 2008 사본에 해당 합니다. 천재.

그리고 나는 [Yini]에 전적으로 동의합니다. 공평합니다. SQL Server 2008 백업을 2005 인스턴스로 복원 할 수는 없지만 Microsoft는 적어도 괜찮은 오류 메시지를 줄 수 있습니다.

" 'D : \ DatabaseBackup_21_02_2011.bak'장치의 미디어 제품군이 잘못 구성되었습니다. SQL Server가이 미디어 제품군을 처리 할 수 ​​없습니다."

백업 잘못 구성 되지 않았습니다. SQL Server 2008 SP1을 실행하는 경우에도 SQL Server 2005 인스턴스 로 복원 할 수 없습니다 .

이것을 오류 메시지에 넣기가 정말 어렵습니까 ............?


0

몇 가지 생각 :

  • 복원중인 데이터베이스의 크기는 대략 얼마입니까? 이 오류 에 대한
    유일한 지원 기사 는 SQL 2000에 대한 것이며 큰 로그 파일에 대해 설명합니다. SQL 2000을 사용하지 않는 동안 로그 크기가 특히 큰 경우 먼저 로그 크기를 줄이는 것이 좋습니다.

  • 데이터베이스를 Dev 서버 (다른 db 이름, 다른 파일)로 복원 할 수 있습니까? 그것은 SQL 2005에 관한 한 파일 자체가 괜찮은지를 증명할 것입니다.

  • 해당 Dev 서버에서 Prod로 다른 데이터베이스를 복원 할 수 있습니까?


0

Mike는 데이터베이스 게시 마법사를 추천하겠다고 제안한 것처럼 훌륭한 업무를 수행합니다.

여기에 내가 완전히 제안하지는 않았지만 처음에는 사용 했던 해결 방법이 있습니다.


1) prod on db를 생성하고 적절한 권한을 가진 db 사용자를 생성하고 원격 액세스를 허용하는 방화벽의 포트를 엽니 다.
2) SQL Server Management Studio의 dev에서 db-> 작업-> 데이터 내보내기를 마우스 오른쪽 단추로 클릭하십시오. 대상을 선택할 때 포트 xxx.xxx.xxx.xxx, 1764를 지정하십시오.
3) 전송할 모든 테이블을 선택하고 다음 100 번을 클릭하면 완료됩니다.

경고 : 저장 프로 시저를 복사하지 않습니다.
경고 : 이것은 int 열의 ID를 복사하지 않습니다.

업데이트 : 2005 년에서 2000 년 사이에 갈 수없는 것처럼 보입니다. 다음 포스트 링크 텍스트를 찾았습니다. 위의 방법을 사용할 수있는 것처럼 들리지만 모든 객체를 스크립팅 한 다음 2000에서 실행하려고합니다.

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