Niedawno zaktualizowałem bazę danych SQL Server 2000 do 2008 R2.
To co zrobiłem to:
- Zamknij usługę SQL Server 2000 (ekspresową) na starym komputerze,
- Przenieś pliki danych ( mydatabase.mdf i mydatabase.ldf ) na nową maszynę,
- Uruchom SQL Server Management Studio 2008,
- Połącz się z lokalnym silnikiem bazy danych,
- Dołącz pliki danych do bazy danych.
- Zmień poziom zgodności bazy danych na SQL 2008 (100).
Pytanie: Co jeszcze powinienem zrobić, aby dokończyć migrację?
Chcę:
- korzystaj z nowych funkcji, takich jak suma kontrolna i model pełnego odzyskiwania,
- spraw, aby ta baza danych była dokładnie taka, jak została utworzona w SQL 2008 R2,
- spraw, by ta baza danych była w pełni kompatybilna, poprawna i idealnie pasowała do nowego silnika bazy danych SQL 2008 R2.
Innymi słowy: chcę tylko wiedzieć, jak poprawnie i całkowicie przekonwertować starą bazę danych SQL 2000 na nową bazę danych 2008 R2, bądź spokojny, że wszystko jest zrobione dobrze i ciesz się ze wszystkich nowych funkcji.
Zadaję to pytanie, ponieważ znalazłem w Internecie wiele witryn, które zawierają tak wiele różnych rzeczy, które powodują, że jestem zdezorientowany: niektórzy twierdzą, że konieczne jest przebudowanie indeksów, inny mówi, że powinien robić inne rzeczy ... i teraz nic nie wiem, więc chcę usłyszeć opinie doświadczonej osoby i jasne instrukcje krok po kroku. Pracuję dla bardzo małej firmy, jestem sam i nie chcę nic zepsuć.
Sir, jestem pod wrażeniem pańskiej odpowiedzi, nie spodziewałem się tak wiele.
Więc kilka komentarzy:
Baza danych jest teraz w produkcji. Jak powiedziałem, został zaktualizowany przy użyciu metody deattach-attach, jak opisałem w pierwszym poście i jak opisano w MSDN: http://msdn.microsoft.com/en-us/library/ms189625.aspx Musiało to zostać zrobione szybko, więc byłem zmuszony to zrobić w ten sposób. Zapomnijmy o tym, jak niewłaściwe to może być i skupmy się na obecnej sytuacji.
Użytkownicy / persmission nie stanowią tutaj problemu - jest ich tylko kilka, a uprawnienia są proste.
Aplikacja korzystająca z bazy danych jest kompatybilna z SQL 2000 do 2012 roku, więc nie stanowi to również problemu.
Plik bazy danych (MDF) nie jest duży - tylko około 1 GB.
Kilka dodatkowych pytań:
Zalecasz użycie metody tworzenia kopii zapasowych / przywracania, ale zrobiłem to tak, jak napisano powyżej, więc czy mogę teraz napotkać jakieś problemy? Wszystko działało bez problemu.
Model sumowania kontrolnego i pełnego odzyskiwania: nie był dostępny / włączony w SQL 2000, więc chcę go teraz użyć. Powiedziałeś, że jedyne, co muszę zrobić, to włączyć te opcje we właściwościach bazy danych? Czytałem gdzieś, że to nie wystarczy i powinienem też odbudować indeksy czy coś takiego. Naprawdę nie wiem, po prostu pytam.
Przygotowuję się do migracji tej bazy danych do SQL 2012 - więc najpierw była z SQL 2000 do 2008 R2, teraz będzie z 2008 R2 do 2012 (było to niemożliwe bezpośrednio z powodu braku obsługi baz danych SQL 2000 w SQL 2012). Rozumiem więc, że powinienem postępować zgodnie z twoim przewodnikiem: wykonaj kopię zapasową w 2008 R2 i przywróć w 2012, a następnie wykonaj resztę swoich wskazówek, prawda?
Wyjaśnij mi metodę tworzenia kopii zapasowych / przywracania: czy to jest jak zrzut bazy danych do zapytań SQL, a następnie przywrócenie ich przez wykonanie szeregu zapytań? Czy ta metoda przy okazji „defragmentuje” moją bazę danych? Jeśli nie, to jak ręcznie go zdefragmentować / zoptymalizować?
Ponieważ korzystaliśmy z SQL 2000 Express od lat (bez interfejsu zarządzania), robiliśmy kopie zapasowe po prostu zatrzymując silnik i RAR katalogu DATA. Na razie, skoro jesteśmy na SQL 2008, czy to nie jest lepsze niż używanie funkcji tworzenia kopii zapasowych w Management Studio?
Tryb pełnego odzyskiwania z częstymi kopiami zapasowymi dziennika transakcji - Gdzie jest przechowywany dziennik transakcji - czy jest to plik LDF? Jak mogę prawidłowo wykonać kopię zapasową?
Wiem, że moje pytania mogą zabrzmieć głupio, nie jestem profesjonalnym administratorem bazy danych, ale jestem jedyną osobą, która może wykonywać takie „twarde” zadania, jak modernizacja silnika bazy danych. Jestem również pewien, że twoja wiedza bardzo pomoże innym ludziom, takim jak ja.
Dziękuję bardzo za poświęcony czas i wiedzę, naprawdę to doceniam.
źródło
Odpowiedzi:
Najważniejszym krokiem do zrobienia jest, aby uruchomić program Doradca uaktualnienia na bazie danych i adresu wszystkich problemów zgłoszonych przez nią SQL Server 2000.
Najlepszym rozwiązaniem jest skorzystanie z narzędzia Doradca uaktualnienia w starszej bazie danych SQL Server 2000 i zaimportowanie pliku śledzenia do narzędzia Doradca uaktualnienia w celu analizy. Plik śledzenia pozwala Doradcy uaktualnienia wykryć problemy, które mogą nie pojawić się podczas zwykłego skanowania bazy danych, takie jak TSQL osadzony w aplikacjach. Możesz przechwytywać ślady TSQL za pomocą SQL Profiler na serwerze SQL Server 2000 w typowych godzinach i analizować te ślady za pomocą Doradcy uaktualnienia.
Tak więc pozostałe kroki to:
W dniu migracji:
DBCC CHECKDB ('<db_name_goes_here>' ) WITH ALL_ERRORMSGS,NO_INFOMSGS, DATA_PURITY
DBCC UPDATEUSAGE('database_name') WITH COUNT_ROWS
Update Statistics table_name with FULLSCAN
sp_recompile 'procedureName'
SP_REFRESHVIEW view_name
W SQL Server 2005 i nowszych wprowadzono pocztę bazy danych . Musisz więc przeprowadzić migrację z SQLMail do poczty bazy danych.
Ponadto, jeśli masz replikację, musisz ją zresetować. Jeśli jakieś DR, takie jak logshipping lub Mirroring (nowe w 2005 r. I nowsze, ale amortyzowane w 2012 r.), Musisz je zresetować.
Stare pakiety DTS należy migrować do SSIS przy użyciu
C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTSMigrationWizard.exe
(wiersza polecenia) lub Kreatora migracji pakietów .Możesz także użyć mojego skryptu znalezionego na /dba//a/36701/8783 . Chociaż używa metody odłączania / dołączania, bardzo polecam użycie metody BACKUP / RESTORE . Zmień odpowiednio skrypt.
Na marginesie:
Pozwala odpowiedzieć na twoje pytania ...
Zobacz moją odpowiedź. Pomoże Ci to właściwie wymyślić plan migracji. Zawsze testuj swój plan migracji w UAT (nieprodukcyjnym) wraz z odpowiednim testowaniem aplikacji przez użytkowników biznesowych.
CHECKSUM
jest nowością w SQL Server 2005 i nowszych wersjach. Omówiłem to w ramach opisanych wyżej kroków migracji.full recovery model
nie jest nowy. Zależy to od rodzaju działalności i decyduje o tym, ile danych możesz stracić w przypadku katastrofy.Tryb pełnego odzyskiwania z częstymi kopiami zapasowymi dziennika transakcji pozwala przywrócić dane w określonym czasie i tam, zmniejszając utratę danych.
Nie do końca to rozumiem! Ale powyższe kroki migracji pomogą ci. Musisz tylko przywrócić bazę danych i zmienić poziom zgodności 10
100
wraz z powyższymi krokami.Musisz być ostrożny, ponieważ będzie to wymagało również zmian w kodzie aplikacji. Jeśli kod aplikacji zostanie zmieniony w celu korzystania z nowych funkcji programu SQL Server 2008 R2, nie wystąpią żadne problemy - ZAPEWNIAJĄC, że w pełni wykonałeś pełne testy regresji aplikacji w środowisku UAT lub DEV. Zapewni to najwyższą pewność podczas rzeczywistej migracji w PROD.
Uwaga: powyżej są kroki, które pamiętam i jestem prawie pewien, że nic nie zostało pominięte. Jeśli zobaczę, że coś przeoczyłem, dodam go lub innych ekspertów na tej stronie - dodaj!
Wszystko, co opisano powyżej, musi najpierw zostać odtworzone w środowisku NON PRODUCTION, aby uniknąć niespodzianek podczas rzeczywistej migracji.
----------
Kilka dodatkowych pytań:
Jeśli wszystko działało dobrze i udało Ci się dołączyć bazę danych, NIE , nie będziesz mieć żadnych problemów. Detach / Attach vs. Backup / Restore to tylko metoda przenoszenia bazy danych w inne miejsce. Po prostu FYI .. Tworzenie kopii zapasowych / przywracanie jest bezpieczniejsze i bardziej niezawodne, jak gdyby coś poszło nie tak (w najgorszych przypadkach), to przynajmniej masz kopię zapasową do przywrócenia i odzyskania bazy danych.
Jak powiedziałem, suma kontrolna jest nowa w wersji 2005 i nowszych. Jest to mechanizm, za pomocą którego SQL Server wykryje uszkodzenie strony, szczególnie z powodu operacji we / wy. Więcej informacji można znaleźć w mojej odpowiedzi tutaj .
Aby włączyć CHECKSUM, a także zmienić model odzyskiwania na FULL, możesz to zrobić przy użyciu poniższego kodu T-SQL:
Uwaga: po ustawieniu opcji bazy danych zostanie ona zachowana podczas migracji z wersji 2008R2 do 2012.
Tak proszę. Jak powiedziałem, przywracanie kopii zapasowej jest preferowaną metodą, chyba że masz dobry powód, aby tego nie robić.
Tworzenie kopii zapasowych / przywracanie jest ... podobne do zrzutu i obciążenia używanego w Sybase, Oracle lub prawdopodobnie również w MySQL. To tylko SQL Server nazywa to .. backup / przywracanie.
Koniecznie przeczytaj: Zrozumienie kopii zapasowych SQL Server autorstwa Paula Randalla.
Prosta składnia (pełna składnia patrz BOL ):
Następnie przywracania można dokonać na serwerze docelowym jako:
- zakładając, że układ dysku docelowego nie pasuje do serwera źródłowego
- zakładając, że układ dysku docelowego jest zgodny z serwerem źródłowym
tworzenie kopii zapasowych / przywracanie nie spowoduje defragmentacji bazy danych. Musisz użyć Alter Index Reorganize lub Rebuild w zależności od poziomu fragmentacji.
Ponieważ jesteś nowy w SQL Server, gorąco polecam użycie Ola Hallengren's:
Zatrzymanie silnika to najgorsza rzecz, jaką możesz zrobić, aby wykonać kopię zapasową !!
Przeczytaj link Paula o kopiach, o których wspomniałem, i użyj skryptu Oli. Microsoft ma artykuł KB ze skryptem do tworzenia automatycznych kopii zapasowych - Jak zaplanować i zautomatyzować tworzenie kopii zapasowych baz danych SQL Server w SQL Server Express
Każda baza danych SQL Server ma dziennik, który rejestruje wszystkie transakcje i modyfikacje bazy danych dokonane przez każdą transakcję. Dziennik transakcji jest kluczowym elementem każdej bazy danych.
Zwykłym rozszerzeniem konwencji nazewnictwa dla dziennika transakcji jest „.LDF”, ale może być dowolny.
Nie zamierzam więcej pisać na ten temat, ponieważ dzięki temu odpowiedź będzie bardzo pochopna. Zobacz Zarządzanie dziennikiem transakcji, a moja odpowiedź tutaj ma również doskonałe linki.
EDYCJA: 24.08.2016 .. Pomoże to przyszłym czytelnikom:
Jeśli migrujesz całą instancję z jednej wersji do innej, zdecydowanie zalecam użycie rozwiązania opartego na PowerShell
Start-SqlMigration
źródło