2012-05-25 10 views
23

Baza danych, która pierwotnie pochodziła z SQL Server 2008, została przywrócona do SQL Server 2012. Utworzono kopię zapasową z SQL Server 2012 i próbuję ją przywrócić na moim lokalnym SQL Server 2008 Express. Jednak pojawia się błąd "Określony rzut nie jest prawidłowy" (SQLManagerUI).Jak mogę przywrócić plik kopii zapasowej bazy danych (.bak) z SQL Server 2012 do SQL Server 2008 Express?

Wygenerowałem skrypt SQL z 2012 roku i ustawiłem go tak, aby generował zgodność z SQL Server 2008. Jest to jednak duży plik sql, około 700mb.

Przypominam, że wcześniej próbowałem uruchomić skrypt o tym rozmiarze na moim lokalnym SQLExpress i również dostałem błąd.

Czy istnieje sposób, aby uzyskać "duże" bazy danych z SQL Server 2012 do SQL Server 2008 Express?

+4

Można ** ** nigdy go „z powrotem” w kategoriach wersjach w SQL Server. Jeśli wykonałeś kopię zapasową bazy danych w wersji 2012, nie możesz przywrócić tej kopii zapasowej do wersji 2008. Po prostu nie będzie działać - bez sztuczek i sposobów wokół niego, albo :-( –

+0

Och, nie Dzięki Marc postaram się zobaczyć, czy mogę uruchomić wygenerowanego skryptu SQL, aby otrzymać kopię bazy danych w moim lokalnym SQL.. wyrazić – stormwild

+1

See [Dlaczego SQL Server nie można przywrócić kopię zapasową do wcześniejszej wersji] (http://www.mytechmantra.com/LearnSQLServer/Unable_to_Restore_Database_From_Backup.html) –

Odpowiedz

21

Podziękowania dla Marca i Aarona za udzielenie odpowiedzi.

Szybka odpowiedź brzmi: nie, nie można przywrócić pliku kopii zapasowej z wyższej wersji do niższej wersji programu SQL Server.

Obejście problemu polegałoby na wygenerowaniu skryptów do utworzenia bazy danych.

Możesz skierować generowanie skryptów do wersji niższej.

Proszę zobaczyć komentarze powyżej, aby uzyskać więcej informacji.

Linki:

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

kilka rzeczy dodać, że może być pomocny dla ludzi

Kiedy skryptów dużych baz danych za pomocą kreatora skryptów w SSMS To naprawdę ważne, aby sprawdzić wykonanie zamów i bądź gotowy do ponownego ustawienia go ręcznie. Starsze wersje SSMS miały ten problem, ponieważ (prawdopodobnie) polegały na sp_depends, który ma bug.

W takich przypadkach naprawdę użyteczne są narzędzia takie jak ApexSQL Diff, których można używać do odczytu kopii zapasowych bazy danych i generowania skryptów, które są we właściwej kolejności wykonywania.

SQL Server database backup restore on lower version

Jedna rzecz, że żadna z metod złapie jest rzeczą Aaron wspomniano o użyciu funkcji specyficznych dla wyższych wersji.

1

Lepszą opcją niż używanie kreatora skryptów SSMS jest użycie podobnego narzędzia dostępnego w Codeplexie o nazwie Kreator migracji bazy danych SQL - http://sqlazuremw.codeplex.com/releases/view/32334. Chcesz najnowszą wersję v4.x do pracy z SQL Server 2012.

Narzędzie jest pierwotnie przeznaczone do migracji baz danych między SQL Server i Azure. Jednak narzędzie działa równie dobrze, jak między SQL Server i SQL Server. Sztuką jest ustawienie SQL Server zamiast Azure jako celu w opcjach zaawansowanych.

Powodem, dla którego jest to lepsza opcja niż kreator skryptów SSMS, jest to, że używa on protokołu BCP do transferu danych, a nie TSQL, a więc jest znacznie bardziej wydajny.

Powiązane problemy