Nachdem Sie diesen Hotfix angewendet haben, müssen Sie das Ablaufverfolgungsflag 1800 als Startparameter auf allen Servern oder Replikaten mit einer physischen Sektorgröße von 512 Byte aktivieren und neu starten, damit dieser Hotfix ordnungsgemäß funktioniert.
Problembeschreibung
Stellen Sie sich folgendes Szenario vor:
-
Sie aktivieren das Feature AlwaysOn-Verfügbarkeitsgruppen oder Logshipping in Microsoft SQL Server.
-
Die Datenträger, auf denen die Protokolldateien des primären und sekundären Replikats in einer AlwaysOn-Verfügbarkeitsgruppe gespeichert werden, weisen unterschiedliche Sektorgrößen auf. Oder in Logshipping-Umgebungen haben die Datenträger, auf denen die Protokolldateien für primäre Logshipping-Server und sekundäre Logshipping-Server gespeichert werden, unterschiedliche Sektorgrößen. Beispiel:
-
Die Protokolldatei des primären Replikats befindet sich auf einem Datenträger mit einer Sektorgröße von 512 Byte. Die protokolldatei des sekundären Replikats befindet sich jedoch auf einem Datenträger mit einer Sektorgröße von 4 KB.
-
Die Protokolldatei des primären Replikats befindet sich auf einem lokalen System mit einer Sektorgröße von 512 Byte. Das sekundäre Replikat befindet sich jedoch auf einem Windows Azure Storage-Datenträger mit einer Sektorgröße von 4 KB.
-
In diesem Szenario wird die folgende Fehlermeldung im SQL Server Fehlerprotokoll protokolliert. Die Fehlermeldung kann nach dem Neustart noch eine Weile anhalten, wenn protokolle vorhanden waren, die vor dem Neustart des Servers nicht auf das sekundäre Replikat angewendet wurden.
Es gab X falsch ausgerichtete Protokoll-IOs, die ein Zurückfallen auf synchrone E/A erforderten. Die aktuelle E/A befindet sich in der Datei ....
Darüber hinaus wird die Verfügbarkeitsgruppen- oder Logshippingsynchronisierung aufgrund der synchronen E/A-Vorgänge sehr langsam ausgeführt. Wenn sich das sekundäre Replikat in Windows Azure Storage befindet, dauert es viel länger als erwartet, bis der Synchronisierungsprozess abgeschlossen ist.
Hinweis Dieses Problem tritt auf, wenn Sie sowohl die neuen Laufwerke mit einer Sektorgröße von 4 KB als auch die alten Laufwerke mit einer Sektorgröße von 512 Byte verwenden. Weitere Informationen zu den neuen Laufwerken finden Sie unter SQL Server – Neue Laufwerke verwenden 4K-Sektorgröße und SQL Server–Speicherplätze/VHDx- und 4K-Sektorgröße.
Lösung
Das Problem wurde zuerst im folgenden kumulativen Update von SQL Server behoben.
Kumulatives Update 5 für SQL Server 2014 /en-us/help/3011055
Kumulatives Update 3 für SQL Server 2012 SP2 /en-us/help/3002049
Kumulatives Update 13 für SQL Server 2012 SP1 /en-us/help/3002044
Nachdem Sie den Hotfix angewendet und das Ablaufverfolgungsflag 1800 als Startparameter auf allen Serverreplikaten aktiviert haben, die auf einem Datenträger mit einer Sektorgröße von 512 Byte ausgeführt werden, stellen Sie einen kleinen Anstieg der Größe der folgenden Dateien fest:
-
Transaktionsprotokolldatei
-
Protokollsicherungen
Darüber hinaus stellen Sie fest, dass die folgenden Meldungen im SQL Server Fehlerprotokoll des primären Servers protokolliert werden:
Das Protokollfragment für die Datenbank "<Datenbankname>" wird neu geschrieben, um der neuen Sektorgröße von 4.096 Byte zu entsprechen.
Dies ist eine Informationsmeldung, die problemlos ignoriert werden kann.
Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und alle Sicherheitsfixes, die im vorherigen kumulativen Update enthalten waren. Sehen Sie sich die neuesten kumulativen Updates für SQL Server an:
Problemumgehung
Um dieses Problem zu umgehen, verschieben Sie die Transaktionsprotokolldatei am Ziel auf ein Laufwerk, auf dem Bytes pro physischem Sektor auf 512 Bytes festgelegt sind.
Status
Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.
Weitere Informationen
Als bewährte Methode sollten Sie sicherstellen, dass alle Datenträger auf allen Replikaten (mindestens alle Datenträger, die Protokolldateien hosten) die gleiche Sektorgröße aufweisen. In gemischten Umgebungen, in denen der sekundäre Sektor über einen physischen Sektor von 512 Bytes und der primäre eine Sektorgröße von 4 KB verfügt, sollte TF 1800 als Startflag auf allen Servern oder Replikaten mit einer physischen Sektorgröße von 512 Byte verwendet und neu gestartet werden. Dadurch wird sichergestellt, dass das Format für die laufende Protokollerstellung eine Sektorgröße von 4 KB verwendet.
Weitere Informationen zur Funktionsweise von SQL Server mit größeren Sektorgrößen finden Sie im folgenden Beitrag im Supportblog:
SQL Server–Speicherplätze/VHDx- und 4K-Sektorgröße
Sie können das Fsutil-Eingabeaufforderungshilfsprogramm verwenden, um den Wert bytes pro physischem Sektor zu bestimmen. Wenn dieser Parameter in der Ausgabe nicht sichtbar ist, müssen Sie den Hotfix anwenden, der im KB-Artikel 982018angegeben ist.
Führen Sie die folgenden Schritte aus, um die Art des Laufwerks zu überprüfen:
-
Führen Sie den folgenden Befehl an einer Eingabeaufforderung mit erhöhten Rechten aus:
Fsutil fsinfo ntfsinfo x: Hinweis Der Platzhalter x stellt das Laufwerk dar, das Sie überprüfen.
-
Verwenden Sie die Werte für Bytes pro Sektor und Bytes pro physischem Sektor , um die Art des Laufwerks zu bestimmen, über das Sie verfügen. Verwenden Sie dazu die folgende Tabelle:
Wert "Bytes pro Sektor"
Wert "Bytes pro physischem Sektor"
Laufwerkstyp
4096
4096
4K nativ
512
4096
Erweitertes Format (auch bekannt als 512E)
512
512
nativ 512 Byte