2012-05-25 2 views
23

원래 SQL Server 2008의 데이터베이스가 SQL Server 2012로 복원되었습니다. SQL Server 2012에서 백업이 이루어졌으며 로컬 SQL Server 2008 Express에서 복원하려고합니다. 그러나 '지정된 캐스트가 유효하지 않습니다.'오류가 발생합니다 (SQLManagerUI).SQL Server 2012에서 SQL Server 2008 Express로 데이터베이스 백업 파일 (.bak)을 복원하려면 어떻게합니까?

2012 년부터 SQL 스크립트를 생성하고 SQL Server 2008과 호환되도록 생성합니다. 그러나 SQL Server는 약 700MB 크기의 큰 SQL 파일입니다.

이전에 로컬 SQLExpress에서 해당 크기의 스크립트를 실행하려고 시도했지만 오류가 발생했습니다.

SQL Server 2012에서 "큰"데이터베이스를 SQL Server 2008 Express로 가져올 수있는 방법이 있습니까?

+4

** 결코 SQL Server의 버전 측면에서 "뒤로"이동할 수 없습니다. 2012 버전으로 데이터베이스를 백업 한 경우 해당 백업을 2008 버전으로 복원 할 수 없습니다. 그냥 작동하지 않습니다 - 아니 트릭이나 주위에 방법 중 하나 :-( –

+0

오, 안돼요. 마크 내가 로컬 SQL에 데이터베이스의 사본을 얻으려면 생성 된 SQL 스크립트를 실행할 수 있는지보십시오 Logged – stormwild

+1

[SQL Server가 이전 버전으로 백업을 복원 할 수없는 이유] (http://www.mytechmantra.com/LearnSQLServer/Unable_to_Restore_Database_From_Backup.html) –

답변

21

답변을 제공해 주신 Marc and Aaron에게 감사드립니다.

빠른 대답은 아니오입니다. SQL Server의 상위 버전에서 낮은 버전으로 백업 파일을 복원 할 수 없습니다.

해결 방법은 데이터베이스를 만드는 스크립트를 생성하는 것입니다.

더 낮은 버전으로 스크립트 생성을 지정할 수 있습니다.

자세한 내용은 위의 의견을 참조하십시오.

링크 :

Why an SQL Server Database from a higher version cannot be restored onto a lower version of SQL Server?

Create Database in SQL Server 2012, Script and Use in 2008?

3

커플 일들이 그 사람

에게 도움이 될 수있는 추가

SSMS에서 스크립트 마법사를 사용하여 대용량 데이터베이스가 실행을 확인하기 위해 정말 중요한 스크립팅 때 주문을하고 그것을 수동으로 다시 준비하십시오. SSMS의 이전 버전은 bugsp_depends에 의존했기 때문에이 문제가 발생했습니다.

이러한 경우에 유용하게 사용 된 도구는 ApexSQL Diff이며 데이터베이스 백업을 읽고 올바른 실행 순서의 스크립트를 생성하는 데 사용할 수 있습니다. 방법 중 어느 것도 잡을 수 없다는 것을

SQL Server database backup restore on lower version

것은 아론이 더 높은 버전으로 특정 기능을 사용하는 방법에 대해 언급 한 것입니다.

1

SSMS 스크립팅 마법사를 사용하는 것보다 더 나은 옵션은 SQL 데이터베이스 마이그레이션 마법사 - http://sqlazuremw.codeplex.com/releases/view/32334이라는 Codeplex에서 제공되는 유사한 도구를 사용하는 것입니다. 최신 버전 v4.x가 SQL Server 2012와 함께 작동하기를 원합니다.

이 도구는 원래 SQL Server와 Azure간에 데이터베이스를 마이그레이션하는 데 사용됩니다. 그러나이 도구는 SQL Server와 SQL Server 사이에서 잘 작동합니다. Azure가 아닌 SQL Server를 고급 옵션의 대상으로 설정하는 것이 트릭입니다.

이것이 SSMS 스크립팅 마법사보다 나은 이유는 TSQL 대신 데이터 전송에 BCP를 사용하므로 훨씬 효율적입니다.