Symptome
Angenommen, Sie aktivieren ein Feature wie AlwaysOn-Verfügbarkeitsgruppen, das einen Protokollpool in einer Instance von Microsoft SQL Server 2012 oder Microsoft SQL Server 2014 verwendet. In dieser Situation weist der Zähler für die Protokollschreibwartezeit für den Protokollpuffer auf der SQL Server instance einen hohen Wert auf. Sie werden auch hohe Werte für die Wartetypen CMEMTHREAD und WRITELOG in dynamischen Verwaltungsansichten (Dynamic Management Views, DMVs) feststellen. Außerdem werden Miniabbilddateien generiert.
Hinweis: Der Protokollpool ist ein In-Memory-Cache des Transaktionsprotokolls. Dieser Cache wird unter anderem verwendet, um das Auslesen des Protokolls während der Wiederherstellung zu optimieren und Rollback-Vorgänge bei der Transaktionsreplikation durchzuführen, sowie für das Feature AlwaysOn-Verfügbarkeitsgruppen.
Ursache
Dieses Problem tritt auf, weil der Protokollpool für alle Datenbanken einen globalen Zeiger auf ein Speicherobjekt (PMO) verwendet.
Wenn viele Threads versuchen, Protokolle mithilfe des Protokollpools zu schreiben, müssen alle Threads auf den Zeiger auf ein Speicherobjekt warten, was zu dem im Abschnitt Symptome beschriebenen Konflikt führt.
Lösung
SQL Server 2014 Service Pack 1
Service Pack 1 für SQL Server 2014 enthält standardmäßig diesen Fix und Sie müssen keine Ablaufverfolgungsflags hinzufügen, um den Fix zu aktivieren.
SQL Server 2014
Das Problem wurde in der RTM-Version von SQL Server 2014 behoben, Sie müssen jedoch weiterhin das Ablaufverfolgungsflag T9024 und/oder 8048aktivieren, um den Fix zu aktivieren. Nachdem Sie dieses Ablaufverfolgungsflag aktiviert haben, partitioniert das SQL Server instance den Zeiger auf ein Speicherobjekt auf Knotenebene.
Notizen
- Wenn die Probleme auch nach dem Aktivieren des Ablaufverfolgungsflags T9024 weiterhin bestehen, können Sie auch das Ablaufverfolgungsflag T8048 aktivieren, das den Zeiger auf Speicherobjekt auf CPU-Ebene partitioniert.
- SQL Server 2014 Service Pack 1 (SP1) enthält diesen Fix, und Sie müssen das Ablaufverfolgungsflag nicht aktivieren.
SQL Server 2012
Hinweis: SQL Server 2012 Service Pack 3 (SP3) enthält diesen Fix, und Sie müssen das Ablaufverfolgungsflag nicht aktivieren.
Informationen zum kumulativen Update
Kumulatives Update 3 für SQL Server 2012 SP1
Die Korrektur für dieses Problem wurde erstmals im kumulativen Update 3 veröffentlicht. Weitere Informationen zum Bezug dieses kumulativen Updatepakets für SQL Server 2012 SP1 finden Sie im folgenden Artikel der Microsoft Knowledge Base:
2812412 Kumulatives Updatepaket 3 für SQL Server 2012 Service Pack 1Hinweis Da die Builds kumulativ sind, enthält jede neue Fixversion alle Hotfixes und Sicherheitsfixes, die in der vorherigen SQL Server 2012 SP1-Fixversion enthalten waren. Es wird empfohlen, die Anwendung des neuesten Fixrelease in Betracht zu ziehen, das diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
2772858 Die SQL Server 2012-Builds, die nach der Veröffentlichung von SQL Server 2012 Service Pack 1 veröffentlicht wurdenHinweis: Nachdem Sie den Hotfix angewendet haben, müssen Sie das Ablaufverfolgungsflag T9024 aktivieren, um den Fix zu aktivieren. Nachdem Sie dieses Ablaufverfolgungsflag aktiviert haben, partitioniert das SQL Server instance den Zeiger auf ein Speicherobjekt auf Knotenebene.
Hinweis Wenn die Probleme auch nach dem Aktivieren des Ablaufverfolgungsflags T9024 weiterhin bestehen, können Sie auch das Ablaufverfolgungsflag T8048 aktivieren, das den Zeiger auf Speicherobjekt auf CPU-Ebene partitioniert.
Hotfixinformationen
Ein Hotfix zur Behebung des Problems ist von Microsoft erhältlich. Der Hotfix ist jedoch nur zur Behebung des in diesem Artikel beschriebenen Problems vorgesehen. Deshalb sollten Sie nur Systeme aktualisieren, bei denen dieses spezifische Problem auftritt.
Wenn der Hotfix zum Download zur Verfügung steht, finden Sie einen Abschnitt "Hotfixdownload verfügbar" oben in diesem Knowledge Base-Artikel. Wenn dieser Abschnitt nicht angezeigt wird, senden Sie eine Anfrage an den Microsoft-Kundendienst und -Support, um den Hotfix zu erhalten.
Hinweis Falls weitere Probleme auftreten oder andere Schritte zur Problembehandlung erforderlich sind, müssen Sie möglicherweise eine separate Serviceanfrage erstellen. Für zusätzliche Supportanfragen und -belange, die sich nicht auf diesen speziellen Hotfix beziehen, fallen die üblichen Supportgebühren an. Besuchen Sie die folgende Microsoft-Website, um eine vollständige Liste der Telefonnummern von Microsoft-Kundendienst und -Support (CSS) anzuzeigen oder eine separate Serviceanfrage zu erstellen:
/contactus/?ws=support Hinweis: Das Formular "Hotfix-Download verfügbar" zeigt die Sprachen an, für die der Hotfix verfügbar ist. Wenn Ihre Sprache nicht angezeigt wird, steht der betreffende Hotfix in Ihrer Sprache nicht zur Verfügung.
Voraussetzungen für SQL Server 2012
Um diesen Hotfix anwenden zu können, muss SQL Server 2012 SP1 auf dem Computer installiert sein.
Neustartanforderung
Sie müssen den Computer nicht neu starten, nachdem Sie diesen Hotfix installiert haben. SQL Server muss mit dem Ablaufverfolgungsflag T9024 neu gestartet werden. Weitere Informationen zum Konfigurieren von SQL Server mithilfe eines Startablaufverfolgungsflags finden Sie unter Startoptionen für den Datenbankmoduldienst.
Dateiinformationen
Die globale Hotfixversion weist die in der nachstehenden Tabelle aufgelisteten Dateiattribute (oder höher) auf. Datums- und Uhrzeitangaben für diese Dateien sind in der "Universal Time Coordinated" (UTC) angegeben. Wenn Sie die Dateiinformationen anzeigen, werden diese Angaben in die Ortszeit umgewandelt. Den Unterschied zwischen UTC- und Ortszeit können Sie in der Systemsteuerung unter Datum und Uhrzeit mithilfe der Angaben auf der Registerkarte Zeitzone ermitteln.