Przeprowadź migrację z SQL Server 2000 do 2012 bez instancji 2005 lub 2008

11

Natknąłem się na trzy stare bazy danych oparte na SQL Server 2000, które muszę przenieść do 2012 r. Uważam, że standardowym podejściem jest przywrócenie do instancji z 2005 lub 2008 r., Aktualizacja, ponowny eksport i wreszcie przywrócenie do 2012 r.

W porządku, ale nie mamy dostępnych instancji z 2005 lub 2008 roku.

Czy są jakieś obejścia lub inne metody, które mogą być warte wypróbowania?

Aby uzyskać informacje, bazy danych zawierają tylko 15-20 tabel i kilka widoków, wydają się bardzo proste, a kopie zapasowe mają rozmiar zaledwie 100-200 MB.

Łunatik
źródło
1
jest to całkowicie legalne i objęte licencją SQL na instalację instancji pośredniej jako „pomostu” do aktualizacji. żaden użytkownik nie powinien się z nim połączyć. ...
Rostol

Odpowiedzi:

21

Nie, nie można obejść problemu uaktualnienia bazy danych bezpośrednio od 2000 do 2012 roku.

Ponieważ nie masz ogromnej ilości danych, możesz wykonywać różne czynności, aby przenieść dane (ale nie bazę danych jako całość), w tym:

  • Kreator importu / eksportu
  • SSIS
  • BCP
  • Ręczne zapytania za pomocą połączonego serwera z 2012 roku lub aplikacji

Jednak niekoniecznie przyniosą one inne rzeczy, takie jak użytkownicy, uprawnienia, role itp. I nie wszystko stworzy obiekty w odpowiedniej kolejności zależności. Są więc bardziej podatni na pracę i błędy. Z mojego doświadczenia wynika, że ​​warto po prostu tymczasowo zainstalować instancję pośrednią, a następnie wykonać dwie operacje tworzenia kopii zapasowej + przywracania - które będą łatwiejsze, szybsze i mniej podatne na błędy niż którakolwiek z powyższych metod.

Jeśli Twoje bazy danych są mniejsze niż 10 GB, możesz zainstalować kopię Express (bezpłatnie) w ciągu kilku minut i korzystać z niej. Możesz pobrać 2008 R2 Express tutaj . Nie sądzę, aby w 2000 r. Istniały jakieś funkcje Enterprise dotyczące struktury bazy danych itp., Które blokowałyby tę aktualizację (większy problem dla bardziej nowoczesnych wersji).

Jeśli Twoja baza danych jest zbyt duża dla Express, powinieneś być w stanie znaleźć wersję dla programistów za około 49 USD (lub nawet taniej - znalazłem 2005 na eBayu za 37 USD ) lub jeśli masz subskrypcję MSDN, powinieneś być w stanie uzyskać dowolną SKU stamtąd.

Lub możesz uciec od korzystania z wersji ewaluacyjnej, która jest nadal niesamowicie oferowana do pobrania dla starszych wersji (np. Znalazłem tutaj 2008 ), jednak jestem na telefonie, więc nie byłem w stanie potwierdzić, że pobieranie dla tej wersji nadal działa .

Aaron Bertrand
źródło
Dzięki. Ponieważ prędkość internetu tutaj jest niska, starałem się unikać pobierania, ale znalazłem pliki binarne instalacyjne 2005, więc myślę, że będzie to najszybsza metoda.
Lunatik
nie, jedynym naprawdę przydatnym jest rok 2008, w przeciwnym razie będziesz także potrzebować 2010 od 2005
Rostol
Jesteś pewien @Rostol? sqlskills.com/blogs/paul/…
Adam Nofsinger
@AdamNofsinger chciałem powiedzieć 100% pewności, zrobiłem to gajillion razy (mamy stary SQL 2000 używany przez stary system) i zbudowaliśmy cel 2008 vm, aby najpierw przywrócić dane, a następnie wykonać kopię zapasową i przywrócić SQL 2016 ... Ale jeśli Paul Randal mówi inaczej ... ale pamiętaj, że metoda bezpośrednia działa od 2005+. nie dla 2000 i 2003 prosto.
Rostol
6

Stwierdzenie, że nie ma obejścia, wydaje się trochę przedwczesne.

Mówisz, że twoja baza danych zawiera tylko kilka tabel i widoków. Dlaczego nie wyeksportować schematu tabel i widoków, gdy SQL tworzy instrukcje i uruchamia je w docelowej bazie danych? Następnie możesz również wyeksportować rzeczywiste dane do czegoś takiego jak format CSV i zaimportować je do docelowej bazy danych, a może nawet napisać coś w C # / C ++ / etc, aby wyeksportować / zaimportować rzeczywiste dane.

Nie musisz wydawać ani grosza na nowe wystąpienia programu SQL Server, których ostatecznie nie potrzebujesz.

Nicholas Hill
źródło
3
I oczywiście wszystkie inne obiekty, procedury składowane, wyzwalacze, funkcje itp. Podobnie istnieje narzędzie BCP do kopiowania danych zi do bazy danych.
RLF
1
Dzięki. Jest to coś, na co może liczyłem, ale dranowanie DB nie jest moją codzienną pracą i nie jestem pewien, czy istnieją jakieś inne zależności lub ustawienia (uprawnienia użytkownika itp.), Które nie zostałyby skopiowane, gdybym właśnie wyeksportowałem tabele itp.
Lunatik
4
W porządku, zaktualizowałem moją odpowiedź. Nadal uważam, że obejście tego problemu jest o wiele więcej pracy niż tylko tymczasowe wstawienie instancji i wykonanie dwóch niezawodnych i podatnych na błędy operacji tworzenia kopii zapasowych i przywracania. (Poza tym nie wydaje się, żeby chodziło o pieniądze , ponieważ OP ma już pliki binarne z 2005 r., A tak małą bazę danych można i tak migrować za pomocą SQL Express.)
Aaron Bertrand
3

Nie, nie możesz migrować go bezpośrednio z 2000 do 2012.

Co możesz zrobić, to zainstalować tymczasową instancję 2005 LUB 2008 lub 2008R2, przywróć bazę danych 2000 tutaj. Po zakończeniu możesz teraz zaktualizować z zainstalowanej instancji, pobierając kopię zapasową bazy danych z tej instancji i przywracając ją na serwerze SQL 2012.

Trzeba będzie przeprowadzić migrację w dwóch krokach:

  • Krok 1: Na przykład wykonaj pierwszą migrację z SQL 2000 do SQL 2008. Musisz mieć wersję SQL 2000 SP4, a następnie wykonaj ten krok: Migracja SQL Server 2000 do SQL Server 2008

  • Krok 2: Wykonaj drugą migrację z SQL Server 2008 do 2012.

KASQLDBA
źródło
0

Mówisz, że „natknąłeś się na trzy stare bazy danych oparte na SQL Server 2000”, co prowadzi mnie do wniosku, że potrzebujesz tylko danych. Domyślam się, że gdyby były prowadzone w określonym celu, to byś wiedział. W takim przypadku zignoruj ​​wszystkie pytania użytkowników, bezpieczeństwa itp.

Kreator importu / eksportu wszystkie tabele Skryptuj procedury składowane i widoki Sprawdź plany konserwacji i zadania agenta, aby udokumentować procesy, które możesz chcieć obejrzeć później.

Mitch Stein
źródło
0

Nie można migrować bezpośrednio z SQL Server 2000 do SQL Server 2012, a jeśli spróbujesz to zrobić, pojawi się następujący błąd o numerze 3169, związany z problemami ze zgodnością.

Migrację do SQL Server 2012 można wykonać z jednej z następujących wersji (wersje minimalne) SQL Server 2005 SP4 lub SQL Server 2008 SP2 lub SQL Server 2008 R2 SP1.

Tak więc pierwszym krokiem do migracji z SQL Server 2000 do jednej z tych wersji jest jeden z Doradców uaktualnienia dla SQL Server 2008 w poniższym linku . Aby upewnić się, że wszystko będzie działać płynnie przed rozpoczęciem procesu przywracania, musisz uruchomić aplikację. Następnie „Uruchom Kreatora analizy doradcy uaktualnienia” i postępuj zgodnie z instrukcjami kreatora.

Po otrzymaniu raportu należy przywrócić bazę danych na docelowym serwerze SQL Server 2005 SP4 lub SQL Server 2008 SP2 lub SQL Server 2008 R2 SP1 i uruchomić na nim poziom zgodności (można go znaleźć w opcji bazy danych). W przypadku logowania do SQL Server postępuj zgodnie z instrukcją w poniższym linku .

Po zakończeniu należy przeprowadzić migrację do programu SQL Server 2012, powtarzając te same kroki z serwera, na którym przeprowadzono pierwszą migrację.

Ahmad Abuhasna
źródło
0

Po pierwsze, zgadzam się, że nie powinieneś migrować bezpośrednio z 2000 do 2012 roku. Myślę, że ten proces został dobrze omówiony. Chciałem zasugerować, abyś na pewno dowiedział się, czy ktoś korzysta z baz danych i do czego ich używa. Być może nie są one używane. Zdarza się, a jeśli tak, to nie martw się. Może się zdarzyć, że dodanie 2 lub 3 tabel i danych (w 2000 r. Użyj programu bcp, jeśli chcesz, aby dane dla pojedynczej tabeli były proste i niezawodne) do istniejącej bazy danych z 2012 r. Zaspokoiłyby potrzeby użytkowników. Jeśli to zrobisz, utwórz nowe tabele w bazie danych 2012 i wyślij dane potrzebne do csv, w razie potrzeby możesz je ponownie pobrać. Jeśli musisz przeprowadzić migrację więcej niż jednej lub dwóch tabel, najprostszym, najbezpieczniejszym i najlepszym sposobem jest migracja dwuetapowa. Don'

dkh63493
źródło
Powinieneś wiedzieć, że skrypty schematu w 2000 roku nie były w 100% dokładne. Pamiętam, że zawsze musiałem edytować skrypt.
dkh63493