Dotyczy
SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Web SQL Server 2008 R2 Standard SQL Server 2008 R2 Express SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Express SQL Server 2012 Standard SQL Server 2012 Web

Firma Microsoft rozpowszechnia poprawki microsoft SQL Server 2008 R2 z dodatkiem Service Pack 1 (SP1) lub Microsoft SQL Server 2008 lub Microsoft SQL Server 2012 w jednym pliku do pobrania. Ponieważ poprawki są zbiorcze, każda nowa wersja zawiera wszystkie poprawki i wszystkie aktualizacje zabezpieczeń, które zostały uwzględnione w poprzedniej wersji SQL Server 2008 R2 z dodatkiem Service Pack 1 (SP1) lub SQL Server 2008 lub Microsoft SQL Server 2012.

Symptomy

Przywracanie bazy danych w programie Microsoft SQL Server 2008 R2 lub Microsoft SQL Server 2008 lub Microsoft SQL Server 2012 może zająć dużo czasu.

Przyczyna

Ten problem występuje, ponieważ tworzenie listy VLF (Virtual Log File) zajmuje dużo czasu, gdy w bazie danych jest wiele plików VLF.

Rozwiązanie

Informacje o aktualizacji zbiorczej

SQL Server 2012 r.

Poprawka rozwiązła ten problem została po raz pierwszy opublikowana w aktualizacji zbiorczej 1 dla SQL Server 2012. Aby uzyskać więcej informacji o tym zbiorczym pakiecie aktualizacji, kliknij następujący numer artykułu, aby wyświetlić ten artykuł w bazie wiedzy Microsoft Knowledge Base:

2679368 Pakiet aktualizacji zbiorczej 1 dla programu SQL Server 2012Note Ponieważ kompilacje są zbiorcze, każda nowa wersja poprawki zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały uwzględnione w poprzedniej wersji poprawki SQL Server 2012. Firma Microsoft zaleca rozważenie zastosowania najnowszej wersji poprawki zawierającej tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2692828 Kompilacje SQL Server 2012 wydane po wydaniu SQL Server 2012 Należy zastosować poprawkę SQL Server 2012 do instalacji SQL Server 2012.

dodatek Service Pack 2 dla SQL Server 2008

Poprawka rozwiązła ten problem została po raz pierwszy wydana w aktualizacji zbiorczej 8 dla SQL Server 2008 z dodatkiem Service Pack 2. Aby uzyskać więcej informacji o tym zbiorczym pakiecie aktualizacji, kliknij następujący numer artykułu, aby wyświetlić ten artykuł w bazie wiedzy Microsoft Knowledge Base:

2648096 Pakiet aktualizacji zbiorczej 8 dla SQL Server 2008 z dodatkiem Service Pack 2Note Ponieważ kompilacje są zbiorcze, każda nowa wersja poprawki zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały uwzględnione w poprzedniej wersji poprawki SQL Server 2008. Firma Microsoft zaleca rozważenie zastosowania najnowszej wersji poprawki zawierającej tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2402659 Kompilacje z SQL Server 2008 r., które zostały wydane po wydaniu dodatku Service Pack 2 SQL Server 2008 firmy Microsoft SQL Server 2008, są tworzone dla określonych SQL Server dodatków Service Pack. Poprawkę dodatku Service Pack 2 SQL Server 2008 należy zastosować do instalacji dodatku Service Pack 2 dla SQL Server 2008. Domyślnie każda poprawka dostępna w SQL Server dodatku Service Pack jest dołączana do następnego SQL Server dodatku Service Pack.

dodatek Service Pack 3 dla SQL Server 2008

Poprawka rozwiązła ten problem została po raz pierwszy opublikowana w aktualizacji zbiorczej 3 dla SQL Server 2008 z dodatkiem Service Pack 3. Aby uzyskać więcej informacji o tym zbiorczym pakiecie aktualizacji, kliknij następujący numer artykułu, aby wyświetlić ten artykuł w bazie wiedzy Microsoft Knowledge Base:

2648098 Pakiet aktualizacji zbiorczej 3 dla SQL Server 2008 z dodatkiem Service Pack 3Note Ponieważ kompilacje są zbiorcze, każda nowa wersja poprawki zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały uwzględnione w poprzedniej wersji poprawki SQL Server 2008. Firma Microsoft zaleca rozważenie zastosowania najnowszej wersji poprawki zawierającej tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2629969 Kompilacje z SQL Server 2008 r., które zostały wydane po SQL Server wydaniu dodatku Service Pack 3 dla SQL Server 2008 r., są tworzone dla określonych SQL Server dodatków Service Pack. Poprawkę SQL Server 2008 z dodatkiem Service Pack 3 należy zastosować do instalacji dodatku Service Pack 3 dla SQL Server 2008. Domyślnie każda poprawka dostępna w SQL Server dodatku Service Pack jest dołączana do następnego SQL Server dodatku Service Pack.

Pakiet aktualizacji zbiorczej 11 dla SQL Server 2008 R2

Poprawka rozwiązła ten problem została opublikowana po raz pierwszy w aktualizacji zbiorczej 11. Aby uzyskać więcej informacji na temat uzyskiwania tego pakietu aktualizacji zbiorczej dla SQL Server 2008 R2, kliknij następujący numer artykułu, aby wyświetlić ten artykuł w bazie wiedzy Microsoft Knowledge Base:

2633145 Pakiet aktualizacji zbiorczej 11 dla programu SQL Server 2008 R2Note Ponieważ kompilacje są zbiorcze, każda nowa wersja poprawki zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały uwzględnione w poprzedniej wersji poprawki SQL Server 2008 R2. Zalecamy rozważenie zastosowania najnowszej wersji poprawki zawierającej tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

981356 Kompilacje SQL Server 2008 R2 wydane po SQL Server 2008 R2 zostały wydane

Pakiet aktualizacji zbiorczej 4 dla SQL Server 2008 R2 z dodatkiem SP1

Poprawka rozwiązła ten problem została opublikowana po raz pierwszy w aktualizacji zbiorczej 4. Aby uzyskać więcej informacji na temat uzyskiwania tego zbiorczego pakietu aktualizacji dla SQL Server 2008 R2 z dodatkiem SP1, kliknij następujący numer artykułu, aby wyświetlić ten artykuł w bazie wiedzy Microsoft Knowledge Base:

2633146 Pakiet aktualizacji zbiorczej 4 dla SQL Server 2008 R2 z dodatkiem SP1Note Ponieważ kompilacje są zbiorcze, każda nowa wersja poprawki zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały uwzględnione w poprzedniej wersji poprawki z SQL Server 2008 R2 z dodatkiem SP1. Zalecamy rozważenie zastosowania najnowszej wersji poprawki zawierającej tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2567616 Udostępniono kompilacje SQL Server 2008 R2 wydane po SQL Server 2008 R2 z dodatkiem SP1

Stan

Firma Microsoft potwierdziła, że jest to problem w produktach firmy Microsoft wymienionych w sekcji "Dotyczy".

Więcej informacji

Możesz sprawdzić liczbę segmentów VLF, przeglądając plik dziennika błędów SQL, a następnie znajdując numer sekwencji dziennika (LSN) w każdym pliku kopii zapasowej dziennika transakcji. Pierwsze cyfry przed symbolem dwukropka w sieciach LSN odpowiadają numerowi nazwy LSN.Na przykład pierwsza liczba w pierwszej wiadomości informacyjnej dla nazwy LSN wynosi 1. Jednak pierwsza liczba w drugiej wiadomości informacyjnej dla sieci LSN jest 100001. W tym scenariuszu między pierwszą wiadomością informacyjną a drugą wiadomością informacyjną jest używanych 100 000 plików VF. W związku z tym rejestrowane pofragmentowany dziennik transakcji, który ma wiele Files dziennika wirtualnego (VLFs) przypomina następujące:

{Log was backed up. ({Log was backed up). Baza danych: mydbname, data utworzenia(godzina): 2010/07/08(12:36:46), pierwsza nazwa LSN: 1:5068:70, ostatnia nazwa LSN: 1:5108:1, liczba urządzeń zrzutu: 1, informacje o urządzeniu: (FILE=1, TYPE=DISK: {'C:\folder\logbackup1.trn'}). Jest to tylko wiadomość informacyjna. Nie jest wymagana żadna akcja użytkownika.Utworzono kopię zapasową dziennika. Baza danych: mydbname, data utworzenia(godzina): 2010/07/08(15:36:46), pierwsza nazwa LSN: 100001:5108:1, ostatnia nazwa LSN: 100002:5108:1, liczba urządzeń zrzutów: 1, informacje o urządzeniu: (FILE=2, TYPE=DISK: {'C:\folder\logbackup2.trn'}). Jest to tylko wiadomość informacyjna. Nie jest wymagane żadne działanie użytkownika.}

Informacje

Aby uzyskać więcej informacji na temat numerów sekwencji dzienników (LSN), odwiedź następującą witrynę internetową MSDN:

Ogólne informacje o numerach sekwencji dzienników

Aby uzyskać więcej informacji na temat wpływu struktury plików dziennika na czas odzyskiwania bazy danych, odwiedź następującą witrynę internetową MSDN:

Jak struktura pliku dziennika może wpłynąć na czas odzyskiwania bazy danychAby uzyskać więcej informacji na temat plików VLF dziennika transakcji, odwiedź następującą witrynę internetową MSDN:

Ogólne informacje o pliku dziennika transakcji

Obejście

  • Zaczekaj na ukończenieoperacji przywracania lub odzyskiwania Jeśli masz nieodzyskaną bazę danych, która ma niską wydajność podczas przywracania lub odzyskiwania bazy danych, może być konieczne poczekanie na ukończenie operacji przywracania lub odzyskiwania. Na przykład stan trybu offline lub stan odzyskiwania może być widoczny w SQL Server Management Studio (SSMS) dla nieodzyskanej bazy danych. Zatrzymanie SQL Server zwykle nie daje żadnej ulgi w przypadku powolnego odzyskiwania i może zająć więcej czasu, aby powtórzyć tę samą fazę analizy odzyskiwania, ponowne wykonanie lub cofnięcie fazy.

  • Unikaj przywracania sekwencji dziennika transakcji zawierającej tysiące plikówVF Jeśli podczas przywracania i odzyskiwania bazy danych przy użyciu pliku kopii zapasowej występują wolne wyniki, możesz uniknąć przywracania sekwencji dziennika transakcji zawierających tysiące plików VLF. Aby zidentyfikować plik kopii zapasowej, w którym zarejestrowano najwięcej plików dziennika wirtualnego, użyj poniższej instrukcji, aby wyświetlić kolumny FirstLSN i LastLSN w plikach kopii zapasowej dziennika: RESTORE HEADERONLY FROM DISK='C:\folder\file.trn'Możesz uniknąć przywracania plików kopii zapasowej dziennika. Możesz też użyć instrukcji STOP AT w poleceniach PRZYWRÓĆ, aby uniknąć wysoce pofragmentowanych części dzienników transakcji. Jeśli sekwencje dziennika nie zostaną w pełni przywrócone do najnowszego punktu w czasie w scenariuszu odzyskiwania awarii, utrata danych występuje w bazie danych SQL Server. Ta utrata danych występuje, ponieważ nie wszystkie transakcje są zachowywane. Dlatego istnieje decyzja o kompromisie biznesowym. Możesz w pełni przywrócić wysoce pofragmentowany dziennik transakcji. Jednak ta operacja może potrwać wiele godzin. Możesz też użyć instrukcji STOP AT w odzyskaniu, aby zatrzymać odzyskiwanie przed wysoce pofragmentowanym fragmentem dziennika. Jednak wszelkie brakujące transakcje, które pominiesz, zostaną utracone.Uwaga Bez instalowania tej poprawki po ponownym uruchomieniu SQL Server zazwyczaj nie ma bezpiecznego odwołania się do szybkiego odzyskiwania. SQL Server musi znaleźć listę plików VF do przeanalizowania plików dziennika, ponowne wykonanie transakcji, a następnie cofnięcie niekompletnych transakcji w celu zakończenia odzyskiwania w celu bezpiecznego wprowadzenia bazy danych do trybu online. Nie można bezpiecznie pominąć transakcji podczas odzyskiwania.

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.