상위 버전의 SQL Server 데이터베이스 백업 파일을 하위 버전의 SQL Server로 복원하는 방법은 무엇입니까?
SQL Server 2008 R2 (10.50.1600)를 사용 하여 백업 파일을 만들었으며 이제는 라이브 서버의 SQL Server 2008 (10.00.1600)에서 파일을 복원하려고합니다 .
SQL Server 2008에 백업을 복원하려고하면 다음과 같은 Restore Failed
이유로 오류가 발생합니다 .
데이터베이스는 버전 10.50.1600을 실행하는 서버에서 백업되었습니다. 해당 버전은 10.00.1600 버전을 실행중인이 서버와 호환되지 않습니다.
이 서버에서 백업 파일을 어떻게 복원합니까?
답변
아니요, 데이터베이스를 다운 그레이드 할 수 없습니다. 10.50.1600은 SQL Server 2008 R2 버전입니다. 이 데이터베이스를 복원하려는 SQL Server 2008 인스턴스에 복원하거나 연결할 수있는 방법은 없습니다 (10.00.1600은 SQL Server 2008 임). 유일한 옵션은 다음과 같습니다.
- 이 인스턴스를 SQL Server 2008 R2로 업그레이드 하거나
- SQL Server 2008 R2 인스턴스에있는 백업을 복원하고 모든 데이터를 내보내고 SQL Server 2008 데이터베이스로 가져옵니다.
답변
데이터베이스 스키마 및 데이터로 구성된 파일 을 생성하는 Export Data-Tier Application 이라는 기능을 사용할 수 있습니다 .bacpac
.
대상 서버 에서 미리 작성된 파일 에서 새 데이터베이스를 작성하고 채우는 데이터 계층 애플리케이션 가져 오기 옵션을 사용할 수 있습니다..bacpac
데이터베이스 스키마를 전송하려는 경우 파일 작성을 위해 데이터 계층 애플리케이션 추출 을 사용 하고 작성된 데이터베이스 스키마를 배치하기 위해 데이터 계층 애플리케이션 배치를 사용할 수 있습니다 .
SQL 2014에서 SQL 2012 및 SQL 2014에서 SQL 2008R2까지 다양한 버전의 SQL Server에서이 프로세스를 시도해 보았습니다.
답변
반드시 작동하지 않습니다
-
백업 / 복원 -대상이 이전 MS SQL 버전 인 경우 작동하지 않습니다.
-
데이터베이스 복사 -대상이 SQL Server Express 인 경우 작동하지 않습니다. “대상 서버는 SQL Server 2005 이상 Express 인스턴스 일 수 없습니다.”
-
데이터 가져 오기 -스키마를 복사하지 않습니다.
작동합니다
-
스크립트 생성 – 작업 -> 스크립트 생성 . 스크립팅 옵션 설정 -> 고급 페이지 에서 원하는 대상 SQL Server 버전을 설정해야 합니다. 스키마, 데이터 또는 둘 다를 복사할지 여부를 선택할 수도 있습니다. 생성 된 스크립트에서 비 표현식에서 표현으로 또는 그 반대로 이동하는 경우 mdf / ldf 파일의 DATA 폴더를 변경해야 할 수도 있습니다.
-
Microsoft SQL Server 데이터베이스 게시 서비스 -SQL Server 2005 이상과 함께 제공됩니다. 여기 에서 최신 버전을 다운로드 하십시오 . 전제 조건 :
sqlncli.msi
/sqlncli_x64.msi
/sqlncli_ia64.msi
,SQLServer2005_XMO.msi
/SQLServer2005_XMO_x64.msi
/SQLServer2005_XMO_ia64.msi
( 여기에서 다운로드 ).
답변
이것을 완료하기위한 다른 옵션에 대한 2 센트는 다음과 같습니다.
타사 도구 : 아마도 작업을 수행하는 가장 쉬운 방법은 하위 버전에서 빈 데이터베이스를 만든 다음 타사 도구를 사용하여 백업을 읽고 새로 만든 데이터베이스를 백업과 동기화하는 것입니다.
레드 게이트는 가장 인기있는 중 하나입니다하지만 같은 많은 다른 사람이있다 ApexSQL DIFF , ApexSQL 데이터 DIFF , 숙련자 SQL , Idera는 …. 이들은 모두 프리미엄 도구이지만 시험 모드에서 작업을 수행 할 수 있습니다.)
스크립트 생성 : 이미 언급했듯이 SSMS를 사용하여 항상 구조와 데이터를 스크립팅 할 수 있지만 실행 순서를 고려해야합니다. 기본적으로 개체 스크립트는 올바르게 정렬되지 않으므로 종속성을 관리해야합니다. 데이터베이스가 크고 많은 개체가있는 경우 문제가 될 수 있습니다.
가져 오기 및 내보내기 마법사 : 모든 오브젝트를 복원하지 않고 데이터 테이블 만 복원하므로 이상적인 솔루션은 아니지만 필요할 때 빠르고 더러운 수정을 고려할 수 있습니다.
답변
상위 버전에서 작성된 데이터베이스 (또는 첨부)를 하위 버전으로 복원 할 수 없습니다. 유일한 방법은 모든 오브젝트에 대한 스크립트를 작성하고 스크립트를 사용하여 데이터베이스를 생성하는 것입니다.
선택 “스키마 및 데이터를” – 당신은 백업 스크립트 파일에 모두 물건을 가지고하려는 경우
선택 만 스키마 –
단지 스키마가 필요합니다.
예, 이제 데이터베이스의 스키마 및 데이터를 사용하여 스크립트 작성을 완료했습니다.
답변
이를 수행하는 다른 방법은 “데이터베이스 복사”기능을 사용하는 것입니다.
원본 데이터베이스> “작업”> “데이터베이스 복사”를 마우스 오른쪽 단추로 클릭하여 찾으십시오.
데이터베이스를 더 낮은 버전의 SQL Server 인스턴스로 복사 할 수 있습니다. 이것은 SQL Server 2008 R2 (SP1)-10.50.2789.0에서 Microsoft SQL Server 2008 (SP2)-10.0.3798.0까지 나를 위해 일했습니다.
답변
당신은 이것을 시도 할 수 있습니다.
- SQL Server 2008에 데이터베이스를 만듭니다.
- 데이터 가져 오기 기능을 사용하면 SQL Server R2 이상에서 데이터를 가져올 수 있습니다.
- “RedGate SQLCompare”를 사용하여 스크립트를 동기화하십시오.