Przeczytałem, że możliwe jest przywrócenie bazy danych w SQL Server, o ile przywracasz ze starszej wersji do nowszej, ze względu na kompatybilność wsteczną.
Czy ktoś wie od razu, czy można przywrócić bazę danych z pliku * .bak dla różnych wersji programu SQL Server? Przenosimy bardzo dużą bazę danych przez FTP, która zajmie kilka dni, więc wolimy to zrobić tylko raz. Jeśli do czasu przesłania bazy danych przez FTP nikt nie odpowie, oczywiście to wypróbujemy i sprawdzimy, czy działa, testując, i odpowiemy na własne pytanie.
Poniżej znajduje się zapytanie, aby uzyskać szczegółowe informacje o wersji programu SQL Server. productversion
Jest w formacie {major revision}.{minor revision}.{release revision}.{build number}
. W moim przypadku wartość {release revision}
ma wartość 5500
źródłową i 5512
docelową. Więc to wygląda dobrze. Jednak edition
jest inaczej.
Pytanie:
SELECT
SERVERPROPERTY('productversion'),
SERVERPROPERTY('productlevel'),
SERVERPROPERTY('edition')
Źródło danych:
10.0.5500.0
SP3
Developer Edition (64-bit)
Docelowa baza danych:
10.0.5512.0
SP3
Enterprise Edition (64-bit)
źródło
Odpowiedzi:
Od dewelopera do przedsiębiorstwa będzie dobrze, po prostu upewnij się, że jeśli korzystasz z licencjonowania procesorów, masz licencje na serwerze docelowym na wszystkie procesory. I nie wystarczy po prostu ukryć je przed SQL, jeśli są one fizycznie podłączone do komputera, jesteś za nie odpowiedzialny.
Również po przejściu z niższej kompilacji na wyższą kompilację zwiększy się wersja bazy danych. Istnieje kilka scenariuszy, w których może to być problematyczne - np. Jeśli korzystasz z 15 000 partycji w konkretnej kompilacji z 2008 r., To nie będzie działać po uaktualnieniu do konkretnej kompilacji z 2008 R2. Możesz także polegać na optymalizacjach (i mieć obejścia), które w rzeczywistości są błędami w starszej wersji, ale zostały naprawione w nowej wersji, co może prowadzić do gorszej wydajności. Konieczne jest również przejrzenie wszystkich flag śledzenia używanych w źródle i określenie, czy powinny one być również włączone w miejscu docelowym. Nieważne zadania, loginy itp.
Oczywiście nie możesz cofnąć się. Nigdy nie próbowałem pomniejszej wersji, takiej jak 10.0.5512 -> 10.0.5500, ale zdecydowanie nie można przejść do wersji Service Pack lub wersji. Jeśli więc masz bazę danych 2012 na instancji Developer Edition i chcesz umieścić ją na instancji 2008 w wersji produkcyjnej, Twoja praca zostanie dla Ciebie odcięta (patrz tutaj i tutaj ) - szczególnie jeśli korzystałeś z funkcji 2012 .
Ale aby objąć inne przypadki, które mogą spotkać ludzi na to pytanie (np. Ktoś chce przejść z Deweloper -> Standard lub Enterprise -> Express lub co masz) ...
Istnieją inne wydania -> uaktualnienia wydania, które nie pójdą tak dobrze, np. Od programisty -> Express, jeśli korzystasz z funkcji, które nie są obsługiwane w Express (tak samo jest w przypadku każdej edycji innej niż Enterprise). Niektóre przykłady funkcji, których nie będziesz mógł używać w wersjach niższych (w takim przypadku przywracanie umrze w momencie, gdy spróbuje przełączyć bazę danych do trybu online):
Nie wiem, czy istnieje sposób, aby powiedzieć to bezpośrednio z pliku .BAK (jestem pewien, że jest trochę magii, którą można wyodrębnić z nagłówków stron, lub jeśli masz weekend do wypalenia za pomocą edytora szesnastkowego) , ale chociaż baza danych jest nadal nienaruszona w instancji źródłowej, zawsze możesz wykonać następujące czynności, aby sprawdzić, czy korzystasz z funkcji dostępnych z powodu jednostki SKU:
Nie jestem pewien, czy SQL Server Audit powinien znajdować się na tej liście - zmieniła się wyłączność edycji tej funkcji, więc prawdopodobnie zależy to od tego, co z nią zrobisz. Są inne rzeczy, których możesz używać, ale nie pojawią się w DMV (niektóre dlatego, że znajdują się w kodzie, którego DMV nie analizuje, a niektóre dlatego, że twoja baza danych polega na zewnętrznych rzeczach, takich jak SQL Server Agent , Service Broker itp.):
Są też przypadki, w których nie będziesz mógł przejść z Dewelopera na Express z powodu ograniczeń rozmiaru pliku (bazy danych Express są ograniczone do 10 GB całkowitego rozmiaru pliku danych).
Oczywiście mogą istnieć inne problemy, o których nie będziesz ostrzegany - nie zapobiegną migracji, ale mogą doprowadzić do bardzo różnej wydajności w celu. Przykłady:
NOEXPAND
. I możesz nawet nie zdawać sobie sprawy z tego, że ta funkcja nagle spowalnia twoje zapytania.AKTUALIZACJA na podstawie tego duplikatu :
Mogą wystąpić sytuacje, w których próbujesz przywrócić bazę danych z określonej edycji do mniejszej wersji (nawet w tej samej wersji) i otrzymujesz błędy, które są mniej niż pomocne :
To nie jest bardzo intuicyjne. Jeśli jednak zajrzysz głębiej w dzienniki zdarzeń programu SQL Server, zobaczysz bardziej przydatne błędy (tylko jeden przykład):
To nie do końca prawda - możesz także przywrócić wersję ewaluacyjną lub wersję dla programistów, ale to nie ma znaczenia. Aby przywrócić tę bazę danych, w zasadzie masz dwie opcje:
Wariacją na (2) byłoby po prostu usunięcie partycjonowania i innych funkcji ze źródłowej bazy danych i zrobienie kolejnej kopii zapasowej. Ale jeśli się nie zepsuło ...
źródło
Deweloper i Enterprise to to samo oprogramowanie, z różnymi umowami licencyjnymi.
Przywracanie tej bazy danych w miejscu docelowym powinno być w porządku.
źródło