Sign in with Microsoft
New to Microsoft? Create an account.

Firma Microsoft rozpowszechnia poprawki z programów Microsoft SQL Server 2005, 2008 i 2008 R2 jako jeden plik do pobrania. Ponieważ poprawki są zbiorcze, każda nowa wersja zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały uwzględnione w poprzednich wersjach poprawek z SQL Server 2005, 2008 i 2008 R2.

Symptomy

Rozpatrzmy następujący scenariusz:

  • Na komputerze można zainstalować program Microsoft SQL Server 2005, Microsoft SQL Server 2008 lub Microsoft SQL Server 2008 R2.

  • Co najmniej jedna baza danych znajduje się w pełnym lub zbiorczym modelu odzyskiwania.

  • Początkowy rozmiar pliku dziennika transakcji dla bazy danych jest niewielki. Jednak plik transakcji powiększa się na dużą.

  • Przyrost wzrostu autogrow pliku dziennika transakcji jest skonfigurowany na niewielki rozmiar. Na przykład przyrost wzrostu autogrow jest skonfigurowany do jednego megabajtu lub do jednego procenta. Możesz też zwiększyć plik dziennika transakcji przy użyciu niewielkiego ręcznego wzrostu.

  • Plik dziennika transakcji powiększa się o niewielki przyrost wzrostu. Po chwili plik dziennika transakcji jest duży.

    Na przykład rozmiar pliku dziennika transakcji wzrasta z 100 megabajtów do dziesięciu gigabajtów. Plik dziennika transakcji zwiększa się o jeden megabajt przyrostu w każdym wzroście.

W tym scenariuszu mogą wystąpić następujące problemy:

  • Odzyskiwanie bazy danych jest powolne, gdy baza danych jest uruchomiona, jeśli jest dużo pracy do odzyskania.

    Na przykład transakcja oczekuje na otwarcie przez długi czas. Jeśli SQL Server zostanie zamknięty lub ponownie uruchomiony, wiele transakcji o małym rozmiarze nie zostanie zatwierdzonych. W takim przypadku może zostać wyświetlony błąd z powodu długiego szacowanego czasu odzyskiwania w fazie analizy, w fazie cofania lub w fazie ponownego użycia. Ten błąd przypomina następujący błąd i jest zalogowany w pliku dziennika błędów SQL Server 2005:

    Analiza bazy danych "moja_baza danych" (7) jest ukończona w 0% (pozostało około 1234 sekund). Jest to tylko wiadomość informacyjna. Nie jest wymagana żadna akcja użytkownika.

  • Odzyskiwanie bazy danych jest powolne, gdy jest przywracany pełny plik kopii zapasowej bazy danych i jest przywracana kolejność dodatkowych dzienników transakcji po przejściu bazy danych do trybu online.

    Uwaga Aby podczas operacji przywracania przenieść bazę danych do trybu online, użyj składni WITH RECOVERY lub WITH STANDBY = <> składni.

  • Odzyskiwanie dublowania bazy danych działa wolno na serwerze partnerskim w parach dublowania.

  • Postęp agenta czytnika dzienników dla replikacji transakcyjnej jest powolny w następujących operacjach:

    • Dziennik transakcji bazy danych wydawcy jest analizowany.

    • Polecenie zostanie dodane do bazy danych dystrybucji.

    • Transakcje są replikowane.

  • Niska wydajność występuje, gdy migawka bazy danych jest tworzona, jeśli zarejestrowano wiele transakcji lub dzienniki transakcji pozostają aktywne przez długi czas. Ten problem występuje, ponieważ migawka musi uruchomić odzyskiwanie i dzienniki transakcji muszą zostać wycofane.

  • Niska wydajność występuje, gdy używasz składni DBCC CHECKDB w celu utworzenia ukrytej migawki bazy danych, która musi w pełni odzyskać migawkę bazy danych w celu uruchomienia testów spójności.

Przyczyna

Te problemy występują, ponieważ pliki dziennika wirtualnego (VF) w pliku dziennika transakcji mogą powodować niską wydajność, gdy SQL Server skanuje te pliki VF podczas następujących operacji:

  • Odzyskiwanie bazy danych

  • Dublowanie bazy danych

  • Migawka bazy danych

  • Działania czytnika dziennika replikacji transakcyjnej bazy danych

Gdy plik dziennika transakcji dla bazy danych jest zwiększany o niewielkie etapy podczas ekstremalnych warunków wzrostu, w jednym zestawie plików dziennika transakcji (ldf) znajdują się od tysięcy tysięcy plików VLF. Jednak duży wzrost dziennika o dużych odstępach tworzy tylko kilka plików VF w porównaniu. Na przykład kilka plików VLF może być mniejszych niż 100.

Uwaga Pliki VLF to podziały lub segmenty używane wewnętrznie przez SQL Server w pliku dziennika transakcji.
 

Rozwiązanie

Informacje o aktualizacji zbiorczej

SQL Server 2008 R2


Poprawka rozwiązła ten problem została opublikowana po raz pierwszy w aktualizacji zbiorczej 6. 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:

2489376 Pakiet aktualizacji zbiorczej 6 dla SQL Server 2008 R2 Uwaga Ponieważ kompilacje są skumulowane, 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

Dodatek Service Pack 1 dla SQL Server 2008

Poprawka rozwiązła ten problem została po raz pierwszy wydana w aktualizacji zbiorczej 12 dla SQL Server 2008 z dodatkiem Service Pack 1.

Uwaga 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:

970365 Kompilacje z SQL Server 2008 r., które zostały wydane po SQL Server wydaniu dodatku Service Pack 1 dla SQL Server 2008 r., są tworzone dla określonych SQL Server dodatków Service Pack. Poprawkę SQL Server 2008 z dodatkiem Service Pack 1 należy zastosować do instalacji dodatku Service Pack 1 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 2 dla SQL Server 2008


Poprawka rozwiązła ten problem została po raz pierwszy opublikowana w aktualizacji zbiorczej 2 dla SQL Server 2008 z dodatkiem Service Pack 2.

Uwaga 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 2005

Poprawka rozwiązła ten problem została po raz pierwszy opublikowana w aktualizacji zbiorczej 13 dla SQL Server 2005 z dodatkiem Service Pack 3.

Uwaga 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 2005 r. 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:

960598 Kompilacje z SQL Server 2005 r., które zostały wydane po SQL Server wydaniu dodatku Service Pack 3 dla SQL Server 2005 r., są tworzone dla określonych SQL Server dodatków Service Pack. Poprawkę dodatku Service Pack 3 SQL Server 2005 należy zastosować do instalacji dodatku Service Pack 3 dla SQL Server 2005. 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 4 dla SQL Server 2005

Poprawka rozwiązła ten problem została po raz pierwszy opublikowana w aktualizacji zbiorczej 1 dla SQL Server 2005 z dodatkiem Service Pack 4.

Uwaga 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 2005 r. Firma Microsoft zaleca rozważenie zastosowania najnowszej wersji poprawki zawierającej tę poprawkę.

Poprawkę SQL Server 2005 z dodatkiem Service Pack 4 należy zastosować do instalacji dodatku Service Pack 4 dla SQL Server 2005. Domyślnie każda poprawka dostępna w SQL Server dodatku Service Pack jest dołączana do następnego SQL Server dodatku Service Pack.

Stan

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

Obejście

Zainstaluj tę poprawkę i uruchom ponownie SQL Server może poprawić wydajność odzyskiwania. Na przykład po zainstalowaniu tej poprawki i ponownym uruchomieniu SQL Server można poprawić wydajność następujących operacji:

  • Odzyskiwanie bazy danych

  • Dublowanie bazy danych

  • Migawka bazy danych

  • Działania czytnika dziennika replikacji transakcyjnej bazy danych


Jeśli nie możesz zainstalować tej poprawki, możesz wykonać poniższe obejścia, aby ograniczyć istniejący problem i zapobiec wystąpieniu w przyszłości.

Ograniczanie istniejącego problemu

  • Poczekaj na ukończenie

    operacji przywracania lub odzyskiwania Jeśli baza danych, która nie została odzyskana, ma niską wydajność podczas przywracania lub odzyskiwania bazy danych, może być konieczne zaczekanie 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ów VLF

    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, które zawierają tysiące plików VF. 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:
    PRZYWRÓĆ NAGŁÓWEKONLY Z DISK='C:\folder\file.trn'

    Możesz uniknąć przywracania plików kopii zapasowych 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.

Zapobieganie wystąpieniu w przyszłości

  • Ustawianie przyrostu autogrow bazy danych na odpowiedni rozmiar

    Jeśli rozmiar przyrostu autogrow jest zbyt mały, będzie wiele plików wirtualnych dzienników (VFs) i może wystąpić niska wydajność w SQL Server. Jeśli rozmiar przyrostu autogrow jest zbyt duży, zapytania, które sprawiają, że dzienniki transakcji rosną automatycznie, może być konieczne długie oczekiwanie na zakończenie wzrostu. Dlatego w SQL Server może wystąpić błąd limitu czasu. Aby obejść te problemy, możesz ustawić odpowiedni rozmiar przyrostu autogrowowania bazy danych.

  • Wyeliminuj dużą liczbę plików VF i użyj ręcznego wzrostu

    Jeśli wiele plików VF znajduje się w dzienniku transakcji, zmniejsz rozmiar dziennika transakcji i zwiększ go przed szczytowym biznesem, aby zaspokoić popyt za pomocą ręcznego wzrostu. Na przykład dziennik transakcji zwiększa się z powrotem do rozsądnego średniego rozmiaru o dużym wzroście lub w pojedynczym ręcznym wzroście. Dlatego rozmiar dziennika transakcji osiąga szczytową pojemność, a pliki kopii zapasowych dziennika są planowane często i okresowo. Ponadto dziennik transakcji może zostać obcięty, a pliki VF dziennika transakcji można ponownie użyć w cyklu.

  • Jak ręcznie

    zmniejszyć i zwiększyć dziennik transakcji Aby poprawić dziennik zawierający zbyt wiele plików VF, wykonaj następujące czynności, aby zmniejszyć dziennik i zwiększyć go ponownie ręcznie:

    1. Jeśli baza danych znajduje się w modelu odzyskiwania pełnego lub zbiorczo rejestrowane, należy wykonać kopię zapasową dziennika transakcji, aby umożliwić obcięcie aktywnych plików VF i ponowne użycie. BACKUP LOG databasename TO DISK='C:\folder\log_backupfile.trn'
      Aby uzyskać więcej informacji na temat tworzenia kopii zapasowej pliku dziennika transakcji przy użyciu usługi SSMS, odwiedź następującą witrynę internetową Microsoft Developer Network (MSDN):

      Jak wykonać kopię zapasową pliku dziennika transakcji przy użyciu usługi SSMSAby uzyskać więcej informacji na temat tworzenia kopii zapasowej pliku dziennika transakcji przy użyciu instrukcji Transact-SQL, odwiedź następującą witrynę internetową MSDN:

      Jak wykonać kopię zapasową pliku dziennika transakcji przy użyciu instrukcji Transact-SQL

    2. Aby określić logiczną nazwę pliku dziennika transakcji, uruchom jedną z następujących instrukcji.
      Instrukcja 1
      exec sp_helpfile Oświadczenie 2
      select * from sys.sysfiles Aby zmniejszyć rozmiar pliku dziennika transakcji do żądanego rozmiaru, użyj następującego kodu:DBCC SHRINKFILE(transactionloglogicalfilename, TRUNCATEONLY)

    3. Możesz zwiększyć rozmiar pliku dziennika transakcji do odpowiedniego rozmiaru. Zalecamy, aby rozmiar pliku dziennika transakcji wzrastał do najwyższego rozmiaru zwykłego. Dlatego unika się przyrostu autogrow. Aby ustawić rozmiar dziennika transakcji, użyj strony Właściwości bazy danych w systemie SSMS lub użyj następującej składni ALTER DATABASE:MODIFY FILE (NAME = transactionloglogicalfilenae, SIZE=newtotalsize MB)
      Aby uzyskać więcej informacji na temat zwiększania rozmiaru bazy danych w systemie SSMS, odwiedź następującą witrynę internetową MSDN:

      Jak zwiększyć rozmiar bazy danych w systemie SSMSAby uzyskać więcej informacji na temat składni ALTER DATABASE MODIFY FILE, odwiedź następującą witrynę internetową MSDN:

      Ogólne informacje o składni ALTER DATABASE MODIFY FILE

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 zawiera wiele plików dziennika wirtualnego (VFs) przypomina następujące:
 

Utworzono kopię zapasową {Log. 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.}

Poniższa tabela zawiera więcej informacji o produktach lub narzędziach, które automatycznie sprawdzają stan opisany w sekcji "Objawy" w wystąpieniu SQL Server oraz w wersjach SQL Server, dla których jest sprawdzana reguła.
 

Oprogramowanie do reguł

Tytuł reguły

Opis reguły

Wersje produktów, na podstawie których sprawdzana jest reguła

System Center Advisor

SQL Server z replikacją transakcyjną wydajność agenta czytnika dzienników może mieć wpływ ze względu na rozmiar dziennika transakcji lub liczbę VLF

W tym SQL Server wystąpieniu doradca wykrył replikacji transakcji obecności z liczbą VFs lub rozmiar TLOG znacznie większe. Na wydajność agenta czytnika dzienników negatywnie wpływa rozmiar dziennika transakcji lub liczba VLF. Zmniejsz rozmiar dziennika transakcji i liczbę VLF, aby poprawić wydajność agenta czytnika dzienników.

SQL Server 2008 r

. SQL Server 2008 R2

SQL Server 2012 r.



 

Informacje

Aby uzyskać więcej informacji na temat fizycznej architektury dziennika transakcji, odwiedź następującą witrynę internetową MSDN:

Ogólne informacje o architekturze fizycznej dziennika

transakcji 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 o błędzie 1413 podczas uruchamiania dublowania bazy danych, odwiedź następującą witrynę internetową MSDN:

Informacje ogólne dotyczące błędu 1413 podczas uruchamiania

dublowania bazy danych Aby uzyskać więcej informacji na temat wpływu struktury pliku 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 danych Aby 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 Aby uzyskać więcej informacji na temat tworzenia migawki bazy danych, odwiedź następującą witrynę internetową MSDN:

Jak utworzyć migawkę bazy danychAby uzyskać więcej informacji na temat przyrostowego modelu obsługi dla SQL Server, kliknij następujący numer artykułu, aby wyświetlić ten artykuł w bazie wiedzy Microsoft Knowledge Base:

935897 Zespół SQL Server udostępnia przyrostowy model obsługi w celu dostarczenia poprawek zgłoszonych problemów Aby uzyskać więcej informacji na temat schematu nazewnictwa dla aktualizacji SQL Server, kliknij następujący numer artykułu, aby wyświetlić ten artykuł w bazie wiedzy Microsoft Knowledge Base:

822499Nowy schemat nazewnictwa dla pakietów aktualizacji oprogramowania firmy Microsoft SQL Server Aby uzyskać więcej informacji na temat terminologii aktualizacji oprogramowania, kliknij następujący numer artykułu, aby wyświetlić ten artykuł w bazie wiedzy Microsoft Knowledge Base:

824684 Opis standardowej terminologii używanej do opisywania aktualizacji oprogramowania firmy Microsoft

Potrzebna dalsza pomoc?

Rozwijaj swoje umiejętności
Poznaj szkolenia
Uzyskuj nowe funkcje w pierwszej kolejności
Dołącz do niejawnych testerów firmy Microsoft

Czy te informacje były pomocne?

Jaka jest jakość języka?
Co wpłynęło na Twoje wrażenia?

Dziękujemy za opinię!

×