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:
- skrypt naszych loginów na serwerze 2000 za pomocą sp_help_revlogin .
- Skryptuj zadania i połączone serwery z serwera SQL 2000.
- zatrzymać serwery WWW łączące się z serwerem 2000. Upewnij się, że żadna aplikacja nie łączy się z serwerem 2000.
- wykonaj kopię zapasową baz danych i przywróć na docelowym serwerze SQL 2008 R2 (uwaga: nie odłączaj / dołączaj, ponieważ może to pójść źle, a skończy się to odłączoną bazą danych i brakiem kopii zapasowych!)
- Po przywróceniu kopii zapasowych na serwerze 2008 R2 uruchom dane wyjściowe ze sp_help_revlogin na serwerze 2008 R2, aby ponownie utworzyć dane logowania.
- Zsynchronizuj osieroconych użytkowników (jeśli istnieją) i odtwórz zadania agenta SQL i połączonych serwerów na nowym serwerze.
- zmień poziom zgodności w przywróconych bazach danych na 100.
- Dbcc checkdb z włączonymi opcjami all_errormsgs i data_purity:
DBCC CHECKDB ('<db_name_goes_here>' ) WITH ALL_ERRORMSGS,NO_INFOMSGS, DATA_PURITY
- uruchom DBCC UPDATEUSAGE na przywróconych bazach danych
DBCC UPDATEUSAGE('database_name') WITH COUNT_ROWS
- Zaktualizuj statystyki wszystkich tabel przy pełnym skanie:
Update Statistics table_name with FULLSCAN
- Opcjonalnie: Sprawdź poziomy fragmentacji i, w zależności od poziomu fragmentacji, uruchom reorg / rebuild wszystkich indeksów. Możesz użyć skryptów Oli .
- Ponownie skompiluj wszystkie SP za pomocą
sp_recompile 'procedureName'
- Odśwież swoje poglądy
SP_REFRESHVIEW view_name
- koniecznie zmień opcję bazy danych: sprawdź stronę na SUMA KONTROLNA.
- Zmień model odzyskiwania (jeśli inny niż SQL 2000) na FULL. Jeśli zmienisz na PEŁNY model odzyskiwania, UPEWNIJ SIĘ, że często wykonujesz kopie zapasowe dziennika transakcji. Pomoże ci to odzyskać punkt w czasie, a także nie nadmuchać T-Log.
W SQL Server 2005 i nowszych wprowadzono pocztę bazy danych . Musisz więc przeprowadzić migrację z SQLMail do poczty bazy danych.
USE [master]
GO
sp_configure 'show advanced options',1
GO
RECONFIGURE WITH OVERRIDE
GO
sp_configure 'Database Mail XPs',1
GO
RECONFIGURE
GO
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:
- włącz natychmiastową inicjalizację pliku na nowym serwerze.
- Mają wiele plików danych tempdb o jednakowej wielkości.
- Włącz flagę śledzenia 1118
- Prawidłowo skonfiguruj pamięć maksymalną i minimalną. Zwłaszcza pamięć Max z dala od domyślnych.
- Prawidłowo dostosuj ustawienia MAXDOP. Patrz /dba//a/36578/8783 więcej szczegółów.
- Najlepiej jest zainstalować sp_Blitz z Brenta Ozara . Uruchom go i rozwiąż zgłoszone przez niego problemy krytyczne i o wysokim priorytecie.
- Możesz nawet używać SQL Power Doc z kendalvandyke - SQL Power Doc współpracuje ze wszystkimi wersjami SQL Server od SQL Server 2000 do 2012 oraz wszystkimi wersjami Windows Server i konsumenckich systemów operacyjnych Windows od Windows 2000 i Windows XP do Windows Server 2012 i Windows 8. Przydatny również przy planowaniu aktualizacji - zobacz, jakie ukryte funkcje są używane w instancji.
- Włącz Optymalizuj dla obciążeń ad-hoc i Domyślne opcje kompresji kopii zapasowej.
Pozwala odpowiedzieć na twoje pytania ...
Co jeszcze powinienem zrobić, aby dokończyć migrację?
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.
korzystaj z nowych funkcji, takich jak suma kontrolna i model pełnego odzyskiwania.
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.
uczyń tę bazę danych dokładnie taką, jaka została utworzona w SQL Server 2008 R2.
spraw, aby ta baza danych była w pełni kompatybilna, poprawna i idealnie pasowała do nowego silnika bazy danych SQL 2008 R2.
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.
Chcę tylko wiedzieć, jak poprawnie i całkowicie przekonwertować starą bazę danych SQL Server 2000 na nową bazę danych 2008 R2, bądź spokojny, że wszystko jest zrobione dobrze i ciesz się ze wszystkich nowych funkcji.
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ń:
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.
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.
Model sumowania kontrolnego i pełnego odzyskiwania: nie był dostępny / włączony w SQL Server 2000, więc chcę ich 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.
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:
USE master;
GO
ALTER DATABASE [your_database_name] -- change this !!
SET RECOVERY FULL, PAGE_VERIFY CHECKSUM;
GO
Uwaga: po ustawieniu opcji bazy danych zostanie ona zachowana podczas migracji z wersji 2008R2 do 2012.
Przygotowuję się do migracji tej bazy danych do SQL Server 2012 - więc najpierw było to od 2000 do 2008 R2, teraz będzie od 2008 R2 do 2012 (było to niemożliwe bezpośrednio z powodu braku obsługi 2000 baz danych w SQL Serwer 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?
Tak proszę. Jak powiedziałem, przywracanie kopii zapasowej jest preferowaną metodą, chyba że masz dobry powód, aby tego nie robić.
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ć?
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 ):
backup database database_name
to disk = 'D:\backup\database_name_full.bak'
with init, stats =10
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
restore database database_name
from disk = 'D:\backup\database_name_full.bak'
move 'logical_data_fileName' to 'physical_path\database_name.mdf'
move 'logical_log_fileName' to 'physical_path\database_name_log.ldf'
with recovery, stats = 10
- zakładając, że układ dysku docelowego jest zgodny z serwerem źródłowym
restore database database_name
from disk = 'D:\backup\database_name_full.bak'
with recovery, stats = 10
Czy ta metoda przy okazji „defragmentuje” moją bazę danych? Jeśli nie, to jak ręcznie go zdefragmentować / zoptymalizować?
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:
Ponieważ od lat korzystaliśmy z SQL Server 2000 Express (bez interfejsu zarządzania), robiliśmy kopie zapasowe po prostu zatrzymując silnik i RAR katalogu DATA. Na razie, skoro jesteśmy na SQL Server 2008, czy to nie jest lepsze niż używanie funkcji tworzenia kopii zapasowych w Management Studio?
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
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ą?
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 PowerShellStart-SqlMigration