Eine 9017 Meldung wird protokolliert, wenn Sie einer Instanz von starten SQL Server wiederherstellen oder einer Datenbank anfügen

Problembeschreibung

Starten einer Instanz von Microsoft SQL Server oder wiederherstellen oder Anfügen einer Datenbank wird eine 9017-Meldung, die der folgenden ähnelt in der SQL Server-Fehlerprotokoll protokolliert:

Datenbank DbName hat mehr als n virtuelle Protokolldateien übermäßig ist. Zu viele virtuelle Protokolldateien können lange Startzeiten und backup-Zeiten führen. Verkleinern des Protokolls und verwenden eine andere Schrittweite Anzahl virtueller Protokolldateien zu berücksichtigen.

Zu viele virtuelle Protokolldateien können die Wiederherstellungszeit der Datenbank beeinträchtigen.

Darüber hinaus verwenden Sie Replikation oder später Technologies in Ihrer Umgebung möglicherweise Leistungsprobleme mit dieser Technologie beachten.

Ursache

Dieses Problem tritt auf, wenn Sie kleine Werte auf Parameter für die Protokolldatei angeben.

Das SQL Server-Datenbankmodul teilt jede physische Protokolldatei intern in mehrere virtuelle Protokolldateien (VLFs). SQL Server 2008 R2 Service Pack 2 oder höher, eine neue Nachricht (9017), die protokolliert wird, wenn eine Datenbank gestartet wird (durch Starten einer Instanz von SQL Server oder das Anfügen oder Wiederherstellen der Datenbank) und mehr als 1.000 VLFs in SQL Server 2008 R2 oder 10.000 VLFS in SQL Server 2012 eingeführt.

Hinweis In SQL Server 2012 auch diese Meldung protokolliert, wenn die Datenbank 10.000 VLFs gibt die eigentliche Nachricht fälschlicherweise im Fehlerprotokoll gemeldet wird "1000 VLF." Grundsätzlich wird die Warnung nach 10.000 VLFs. Die Nachricht meldet jedoch 1.000 VLFs. Dieses Problem wird in zukünftigen Versionen behoben.

Weitere Informationen, wie die erhöhte Anzahl der VLFs zu Leistungsproblemen in Replikation oder Konfigurationen zum Spiegeln von Datenbanken führen finden Sie im Abschnitt "Weitere Informationen".

Problemlösung

Gehen Sie folgendermaßen vor, um dieses Problem zu beheben:
  1. Reduzieren Sie das Transaktionsprotokoll sein oder SQL Server Management Studio.
  2. Vergrößern Sie die Transaktionsprotokolldatei auf einen größeren Wert regelmäßige automatische Wachstum zu. Weitere Informationen finden Sie im folgende Thema in der Onlinedokumentation zu SQL Server-Website:

  3. Erhöhen der Parameter auf einen größeren Wert als aktuellen Konfiguration. Dies sollte basierend auf der Aktivität der Datenbank und wie oft die Datei wächst.

Außerdem sollten Sie erwägen, die folgenden Updates, je nach der Version von SQL Server, die derzeit ausgeführt werden:


Weitere Informationen

Wie Sie die Anzahl der Segmente in einer Datenbank gespeichert

Die Anzahl der Segmente VLF finden in einer Datenbank Sie die Differenz zwischen dem frühesten und die neuesten Protokollsequenznummer (LSNs) der Sicherungskopien der Transaktionsprotokolle der Datenbank finden.

Die LSN des Transaktionsprotokolls finden überprüfen Sie Ihre SQL Server-Fehlerprotokoll eine Nachricht, die der folgenden ähnelt:

{Protokoll wurde gesichert. Datenbank: Mydbname, creation_date_(time): Datum(Zeit) erste LSN: 1: 5068:70, Letzte LSN: 1: 5108:1, Anzahl der Sicherungsmedien: 1 Geräteinformationen: (Datei = 1, Typ = Datenträger: {C:\folder\logbackup1.trn}). Dies ist eine informative Meldung. Es ist keine Benutzeraktion erforderlich.

Hinweis In dieser Meldung ist die LSN des Transaktionsprotokolls 1. (Es ist die erste Zahl vor dem Doppelpunkt in "LSN: 1:5068:70.")

Gehen Sie hierzu folgendermaßen vor:
  1. Die erste Sicherung des Transaktionsprotokolls für die Datenbank in der SQL-Fehlerprotokoll LSN suchen (z. B. LSN: 1:5108:1).
  2. Finden Sie die neueste LSN für die Sicherung des Transaktionsprotokolls im SQL-Fehlerprotokoll (z. B. LSN:10, 235: 5108: 1).
  3. Die Anzahl der Segmente VLF unterscheidet die neuesten LSN die früheste LSN (In diesem Fall ist 10,235-1 = 10,234).

Die Auswirkung vieler VLFs Replikation

Zu viele Protokolldateien können Replikation beeinflussen, da Protokollleseprozess jede virtuelle Protokolldatei bei Scannen muss, die für die Replikation gekennzeichnet sind. Sie können dieses Verhalten tracing der Leistung der Sp_replcmds gespeicherten Prozedur anzeigen Vom Protokollleser verarbeitet verwendet Sp_replcmds gespeicherte Prozedur virtuellen Protokolldateien Scannen und lesen die Transaktionen, die für die Replikation gekennzeichnet sind. Klicken Sie für weitere Informationen auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:

949523 die Wartezeit einer Transaktionsreplikation ist in SQL Server 2005 hoch, wird der Wert der Eigenschaft "Anfangsgröße" und den Wert der Eigenschaft für die automatische Vergrößerung klein

Die Auswirkung vieler VLFs Datenbank Spiegelung

Zu viele Protokolldateien können auch später beeinflussen. Klicken Sie für weitere Informationen auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:

2455009 Update: geringe Leistung, wenn Sie eine Datenbank wiederherstellen, gibt es viele VLFs innerhalb des Transaktionsprotokolls in SQL Server 2005, SQL Server 2008 oder SQL Server 2008 R2

Eigenschaften

Artikelnummer: 2882905 – Letzte Überarbeitung: 23.01.2017 – Revision: 1

Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Standard Edition

Feedback