2009-11-16 5 views
5

Muszę przenieść całą bazę danych z maszyny SQL Server 2008 do maszyny SQL Server 2000.Przywróć bazę SQL Server 2008 do SQL Server 2000

Utworzono kopię zapasową za pomocą programu Management Studio 2008, skopiowałem ją na dysk twardy w pudełku 2000, a następnie za pomocą programu Management Studio 2008 wybrałem opcję Przywróć bazę danych w polu 2000.

Otrzymuję komunikat o błędzie z informacją, że "Rodzina nośników na urządzeniu ... jest niepoprawnie sformatowana, a serwer SQL nie może odtworzyć tej rodziny nośników".

Jeśli korzystam z Enterprise Manager 2000, pojawia się ten sam błąd.

Czy istnieje sposób przeniesienia całej bazy danych z nowszego serwera SQL na starszy?

Odpowiedz

10

Jedyne, co mogę wymyślić to odtworzyć całą strukturę, a następnie skopiować dane z żywej bazy danych. Stwórz więc skrypty, które utworzą tabele, widoki i sp, a następnie utwórz skrypty do kopiowania danych z istniejącej bazy danych.

+1

Właśnie skończyłem robić to sam. Jedynym sposobem, w jaki to zrobiłem, było napisanie skryptu całej bazy danych (w tym danych) i uruchomienie skryptu na maszynie docelowej. Teraz jest to bardzo trudne, ponieważ DB 2008 może utworzyć skrypt, który nie będzie działał w 2000 roku (dobrze, mój był), więc będziesz musiał edytować wygenerowany skrypt przed uruchomieniem w 2000 roku. Zapasy na Tylenol przed rozpoczęciem. Powodzenia. – BoltBait

+4

Tak, to jedyny sposób, aby to zrobić. Serwer SQL nigdy nie był kompatybilny wstecz, np. nigdy nie byłeś w stanie przywrócić nowszej wersji do starszego serwera. Nie sądzę, żeby to się zmieniło. –

0

Słyszałem, że można to zrobić jedynie poprzez wygenerowanie zrzutu instrukcji SQL z narzędzia administratora DB i ponowne uruchomienie tych zapytań w docelowej starszej bazie danych.

+1

Oczywiście będziesz musiał manipulować nimi ręcznie, ponieważ narzędzie skryptowe zawiera rzeczy, których 2000 nie rozpozna. – HLGEM

1

Nie można przenosić kopii zapasowych z nowszej wersji na starszą, w takim przypadku można skryptować bazę danych, wykonać ją w 2000 roku, a następnie można użyć standardowego transferu danych do przesłania dowolnych danych

0

Można wygenerować skrypt, który będzie odtwarzać wszystkie obiekty i przenosić wszystkie dane ... o ile wszystko w db jest poprawne w SQL 2000. Więc nie ROW_NUMBER(), bez udziału, bez CTE, bez datetime2, hierarchii lub kilka innych typów pól, bez EXECUTE AS i wiele innych dobroci. Zasadniczo istnieje spora szansa, że ​​nie jest to możliwe, chyba że twój db jest dość prosty.

1

Pod warunkiem, że masz połączenie sieciowe między maszynami, użyj SSIS. Znacznie łatwiejsze i o wiele mniej kłopotliwe.

1

Można użyć Script Generator do bazy danych, a następnie wybrać we właściwościach tworzą: General-> Skrypt dla wersji serwera: SQL Server 2000.

Generator skrypt pokaże to, co nie jest kompatybilny z twoją wersją serwera .

2

Jak już inni mówili, nie ma na to żadnego domyślnego sposobu. To nie jest obsługiwane. Poniżej znajdują się bardziej szczegółowe informacje na temat prawidłowego wykonania tej czynności i uniknięcia problemów związanych z migracją.

Musisz wygenerować skrypty dla struktury i danych, a następnie wykonać je w SQL 2000 (jak już powiedzieli inni), ale jest kilka rzeczy do wzięcia pod uwagę.

Generowanie skrypty w SSMS

  • Upewnij się, aby sprawdzić opcje dla danych skryptów SQL 2000, aby uniknąć problemów podczas próby stworzenia czegoś podobnego typu geografia kolumnowej na SQL 2000.
  • Upewnij recenzję kolejność wykonywania skryptów w celu uniknięcia błędów w oparciu zależnościami

ten jest doskonałym rozwiązaniem dla małych i średnich baz danych wielkości i wymaga pewnej wiedzy o SQL Server (zależności, różnice między wersjami i takie tam)

narzędzi firm trzecich

  • Pomysł polega na użyciu narzędzi innych firm, takich jak baza danych porównawczych ApexSQL Diff lub Data Diff
  • Dobra strona jest taka, że ​​będą one dbać o wykonanie skryptu i różnice między wersjami
  • Nie tak dobre jest to, że trzeba zapłacić za te po procesie kończy
  • Użyłem tych dwóch narzędzi z powodzeniem, ale nie można się pomylić z żadnym innym narzędziem dostępnym na rynku. Here to lista innych narzędzi w tej kategorii.
0

Mamy podobną sytuację. Bardzo nisko-tech, ale poręczne rozwiązanie:

  1. backup i obcina tabel w SQL 2000.
  2. utworzyć serwer połączony w SQL 2008, wskazując na SQL 2000
  3. uruchomić kwerendę wybierającą się do sysobjects wygeneruj skrypt zapytania dla insert into LINKED SERVER.table select * from table
  4. Wykonaj skrypt zapytania.