KB2653893: es dauert lange, bis eine Datenbank in SQL Server 2008 R2 oder in SQL Server 2008 oder in SQL 2012 wiederhergestellt wird.

Gilt für: SQL Server 2008 R2 DeveloperSQL Server 2008 R2 EnterpriseSQL Server 2008 R2 Web

Microsoft vertreibt Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) oder Microsoft SQL Server 2008 oder Microsoft SQL Server 2012-Fixes in einer herunterladbaren Datei. Da die Fixes kumulativ sind, enthält jede neue Version alle Hotfixes und alle Sicherheitsupdates, die im vorherigen SQL Server 2008 R2 Service Pack 1 (SP1) oder SQL Server 2008 oder Microsoft SQL Server 2012-Update veröffentlicht wurden.

Problembeschreibung


Es kann eine lange Zeit dauern, bis eine Datenbank in Microsoft SQL Server 2008 R2 oder in Microsoft SQL Server 2008 oder in Microsoft SQL Server 2012 wiederhergestellt wird.

Ursache


Dieses Problem tritt auf, weil es lange dauert, bis die Liste der virtuellen Protokolldateien (Virtual Log File, virtuelle Protokolldatei) erstellt wird, wenn viele VLFs in der Datenbank vorhanden sind.

Fehlerbehebung


Informationen zum kumulativen Update

SQL Server 2012

Die Fehlerbehebung für dieses Problem wurde erstmals im kumulativen Update 1 für SQL Server 2012 veröffentlicht. Wenn Sie weitere Informationen zu diesem kumulativen Updatepaket erhalten möchten, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
2679368 Kumulatives Updatepaket 1 für SQL Server 2012
Hinweis Da die Builds kumulativ sind, enthält jede neue Fix-Version alle Hotfixes und alle Sicherheitsupdates, die in der vorherigen Version von SQL Server 2012 behoben wurden. Microsoft empfiehlt, die neueste Fix-Version zu verwenden, die diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
2692828 Die SQL Server 2012-Builds, die nach der Veröffentlichung von SQL Server 2012 veröffentlicht wurden
Sie müssen einen SQL Server 2012-Hotfix auf eine Installation von SQL Server 2012 anwenden.

SQL Server 2008 Service Pack 2

Der Fix für dieses Problem wurde erstmals im kumulativen Update 8 für SQL Server 2008 Service Pack 2 veröffentlicht. Wenn Sie weitere Informationen zu diesem kumulativen Updatepaket erhalten möchten, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
2648096 Kumulatives Updatepaket 8 für SQL Server 2008 Service Pack 2
Hinweis Da die Builds kumulativ sind, enthält jede neue Fix-Version alle Hotfixes und alle Sicherheitsupdates, die in der vorherigen Version von SQL Server 2008 behoben wurden. Microsoft empfiehlt, die neueste Fix-Version zu verwenden, die diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
2402659 Die SQL Server 2008-Builds, die nach der Veröffentlichung von SQL Server 2008 Service Pack 2 veröffentlicht wurden
Microsoft SQL Server 2008-Hotfixes werden für bestimmte SQL Server-Service Packs erstellt. Sie müssen einen SQL Server 2008 Service Pack 2-Hotfix auf eine Installation von SQL Server 2008 Service Pack 2 anwenden. Standardmäßig ist jeder Hotfix, der in einem SQL Server-Service Pack bereitgestellt wird, im nächsten SQL Server-Service Pack enthalten.

SQL Server 2008 Service Pack 3

Der Fix für dieses Problem wurde erstmals im kumulativen Update 3 für SQL Server 2008 Service Pack 3 veröffentlicht. Wenn Sie weitere Informationen zu diesem kumulativen Updatepaket erhalten möchten, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
2648098 Kumulatives Updatepaket 3 für SQL Server 2008 Service Pack 3
Hinweis Da die Builds kumulativ sind, enthält jede neue Fix-Version alle Hotfixes und alle Sicherheitsupdates, die in der vorherigen Version von SQL Server 2008 behoben wurden. Microsoft empfiehlt, die neueste Fix-Version zu verwenden, die diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
2629969 Die SQL Server 2008-Builds, die nach der Veröffentlichung von SQL Server 2008 Service Pack 3 veröffentlicht wurden
Microsoft SQL Server 2008-Hotfixes werden für bestimmte SQL Server-Service Packs erstellt. Sie müssen einen SQL Server 2008 Service Pack 3-Hotfix auf eine Installation von SQL Server 2008 Service Pack 3 anwenden. Standardmäßig ist jeder Hotfix, der in einem SQL Server-Service Pack bereitgestellt wird, im nächsten SQL Server-Service Pack enthalten.

Kumulatives Updatepaket 11 für SQL Server 2008 R2

Der Fix für dieses Problem wurde erstmals im kumulativen Update 11 veröffentlicht. Wenn Sie weitere Informationen zum beziehen dieses kumulativen Updatepakets für SQL Server 2008 R2 benötigen, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
2633145 Kumulatives Updatepaket 11 für SQL Server 2008 R2
Hinweis Da die Builds kumulativ sind, enthält jede neue Fix-Version alle Hotfixes und alle Sicherheitsupdates, die mit der vorherigen Version von SQL Server 2008 R2 behoben wurden. Wir empfehlen, dass Sie die neueste Fix-Version anwenden, die diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
981356 Die SQL Server 2008 R2-Builds, die nach der Veröffentlichung von SQL Server 2008 R2 veröffentlicht wurden

Kumulatives Updatepaket 4 für SQL Server 2008 R2 SP1

Die Fehlerbehebung für dieses Problem wurde zuerst in Kumulatives Update 4 veröffentlicht. Wenn Sie weitere Informationen zum beziehen dieses kumulativen Updatepakets für SQL Server 2008 R2 SP1 erhalten möchten, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
2633146 Kumulatives Updatepaket 4 für SQL Server 2008 R2 SP1
Hinweis Da die Builds kumulativ sind, enthält jede neue Fix-Version alle Hotfixes und alle Sicherheitsupdates, die in der vorherigen Version von SQL Server 2008 R2 SP1 enthalten waren. Wir empfehlen, dass Sie die neueste Fix-Version anwenden, die diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
2567616 Die SQL Server 2008 R2-Builds, die nach der Veröffentlichung von SQL Server 2008 R2 SP1 veröffentlicht wurden

Status


Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.

Weitere Informationen


Sie können die Anzahl der Segmente des Segments überprüfen, indem Sie die SQL-Fehlerprotokolldatei überprüfen und dann in jeder Transaktionsprotokoll-Sicherungsdatei die Protokollfolgenummer (Log Sequence Number, LSN) finden. Die ersten Ziffern vor dem Doppelpunkt Symbol in der LSNs entsprechen der Nummer der LSN. Beispielsweise ist die erste Zahl in der ersten Informationsmeldung für die LSN 1. Die erste Zahl in der zweiten Informationsmeldung für die LSN lautet jedoch 100001. In diesem Szenario gibt es 100.000 VLFs, die zwischen dem Zeitpunkt der ersten Informationsnachricht und der zweiten Informationsnachricht verwendet werden. Daher ähnelt das protokollierte fragmentierte Transaktionsprotokoll, das viele virtuelle Protokolldateien (VLFs) enthält, wie folgt:
{Log wurde gesichert. Datenbank: mydbname, Erstellungsdatum (Zeit): 2010/07/08 (12:36:46), erste LSN: 1:5068:70, Letzte LSN: 1:5108:1, Anzahl der dumpgeräte: 1, Geräteinformationen: (Datei = 1, Typ = Datenträger: {' C:\folder\logbackup1.trn '}). Dies ist nur eine Informationsmeldung. Es ist keine Benutzeraktion erforderlich. Protokoll wurde gesichert. Datenbank: mydbname, Erstellungsdatum (Zeit): 2010/07/08 (15:36:46), erste LSN: 100001:5108:1, Letzte LSN: 100002:5108:1, Anzahl der dumpgeräte: 1, Geräteinformationen: (Datei = 2, Typ = Datenträger: {' C:\folder\logbackup2.trn '}). Dies ist nur eine Informationsmeldung. Es ist keine Benutzeraktion erforderlich.}

Informationsquellen


Weitere Informationen zu Protokollfolgenummern (Log Sequence Numbers, LSN) finden Sie auf der folgenden MSDN-Website:
Weitere Informationen dazu, wie sich eine Protokolldatei Struktur auf die Wiederherstellungszeit der Datenbank auswirken kann, finden Sie auf der folgenden MSDN-Website: Weitere Informationen zu den Transaktionsprotokoll-VLFs finden Sie auf der folgenden MSDN-Website:

Problemumgehung


  • Warten Sie, bis der Wiederherstellungs-oder Wiederherstellungsvorgang abgeschlossen istWenn Sie über eine nicht wiederhergestellte Datenbank verfügen, bei der die Leistung beim Wiederherstellen oder Wiederherstellen der Datenbank langsam ist, müssen Sie möglicherweise warten, bis der Wiederherstellungs-oder Wiederherstellungsvorgang abgeschlossen ist. So können Sie beispielsweise den Offlinestatus oder den Wiederherstellungsstatus in SQL Server Management Studio (SSMS) für eine nicht wiederhergestellte Datenbank sehen. Das Beenden von SQL Server bietet in der Regel keine Entlastung für eine langsame Wiederherstellung und kann mehr Zeit in Anspruch nehmen, um dieselbe Wiederherstellungs Analysephase, wiederholen-Phase oder rückgängig-Phase zu wiederholen
  • Vermeiden Sie das Wiederherstellen der Transaktionsprotokoll Sequenz, die Tausende von VLFs enthält.Wenn Sie die langsame Leistung beim Wiederherstellen und Wiederherstellen einer Datenbank mithilfe einer Sicherungsdatei erleben, können Sie die Wiederherstellung der Transaktionsprotokoll Sequenzen verhindern, die Tausende von VLFs enthalten. Um die Sicherungsdatei zu identifizieren, die die meisten virtuellen Protokolldateien aufzeichnet, verwenden Sie die folgende Anweisung, um die FirstLSN-und LastLsn-Spalten in den Protokollsicherungsdateien anzuzeigen: RESTORE HEADERONLY from Disk = "C:\folder\file.trn" Sie können sich entscheiden, die Wiederherstellung der Protokollsicherungsdateien zu vermeiden. Sie können auch die Stop at-Anweisung in den Restore-Befehlen verwenden, um die stark fragmentierten Teile der Transaktionsprotokolle zu vermeiden. Wenn Sie die Protokollsequenzen während eines Fehler Wiederherstellungsszenarios bis zum neuesten Zeitpunkt nicht vollständig wiederherstellen, erfolgt der Datenverlust in der SQL Server-Datenbank. Dieser Datenverlust tritt auf, weil nicht alle Transaktionen aufbewahrt werden. Daher gibt es eine geschäftliche Kompromiss Entscheidung. Sie können ein stark fragmentiertes Transaktionsprotokoll vollständig wiederherstellen. Dieser Vorgang kann jedoch viele Stunden dauern. Sie können auch die Stop at-Anweisung in der Wiederherstellung verwenden, um die Wiederherstellung vor dem stark fragmentierten Teil des Protokolls zu beenden. Alle fehlenden Transaktionen, die Sie auslassen, gehen jedoch verloren.Hinweis Ohne diesen Hotfix zu installieren, gibt es in der Regel keinen sicheren Rückgriff auf eine beschleunigte Wiederherstellung nach dem Neustart von SQL Server. SQL Server muss die Liste der VLFs suchen, um die Protokolldateien zu analysieren, abgeschlossene Transaktionen wiederholen und dann unvollständige Transaktionen rückgängig machen, um die Wiederherstellung abzuschließen, um die Datenbank sicher online zu schalten. Sie können Transaktionen während der Wiederherstellung nicht sicher überspringen.