Windows 11: MSSQL-Server-Instanz wegen Sektorengröße nicht mehr lauffähig

Windows[English]Windows 11 scheint sich für viele Leute zu einer Herausforderung zu entwickeln, weil es an allen Ecken Probleme mit Treibern und Software gibt. Ein Blog-Leser hat mich auf ein spezielles Problem bei einem Kundenrechner aufmerksam gemacht. Dort kann eine MSSQL-Server-Instanz nicht mehr gestartet werden,  weil sich die Sektorengröße auf einen nicht unterstützt Wert geändert hat. Ergänzung: Scheint auch Windows Server 2022 zu betreffen und hängt wohl mit Samsungs SSD 980 zusammen.


Anzeige

Microsoft SQL Server

Der Microsoft SQL Server (MSSQL) ist ein relationales Datenbankmanagementsystem von Microsoft, welches unter Windows in verschiedenen Versionen verfügbar ist. Aktuell ist Microsoft SQL Server 2019 und eine 2022er Edition ist in der Preview. Dazu gibt es noch die kostenlosen Express-Editionen des MSSQL-Servers.

Die Richtlinie für technischen Support für Microsoft SQL Server führt zudem mit Stand vom 25.1.2022 aus, dass SQL Server 2017 unter Linux (alle Editionen), SQL Server 2017 auf Windows (alle Editionen) laufen soll. Ich gehe mal davon aus, dass dies auch für aktuellere SQL Server-Versionen gilt.

Windows 11: MSSQL-Server startet nicht mehr

Blog-Leser Philipp K. Schießl hat mich in einer privaten Nachricht auf ein Problem angesprochen, das bei einem seiner Kunden aufgetreten ist. Philipp schreibt dazu, dass er mir als Leser eine Problemdarstellung schickt, die ggf. interessant sein könnte und schildert das Problem:

Ich habe auf einem Kundenrechner das Phänomen, dass nach dem Upgrade auf Windows 11 die MSSQL-Server-Instanz nicht mehr lauffähig ist.

Eine schnelle Google-Suche nach Schlagworten wie "MSSQL-Server startet nicht" hat mir einige Treffer vom Januar 2022 bei Microsoft ausgeworfen. So wurde der Supportbeitrag SQL Server Dienst wird nach der Installation des Patches möglicherweise nicht gestartet am 25.1.2022 aktualisiert. Auch der Beitrag Verwenden von SQL Server in Windows wurde im Januar 2022 aktualisiert. Allerdings führen die betreffenden Dokumente mich nicht weiter. Ich hatte den Leser noch gefragt, was die Datei errorlog.txt dazu sagt. Dort meinte er, dass eine Zeile:

There have been 256 misaligned log IOs which required falling back to synchronous IO. 
The current IO is on file C:\Program Files\Microsoft SQL Server\MSSQL15.XXX\MSSQL\DATA\master.mdf.

relevant sein könnte. So richtig viel gaben die Log-Einträge aber nicht her.

Sektorgröße wird nicht unterstützt

Philipp hat sich dann der Sache angenommen und ist auf einen recht kruden Sachverhalt gestoßen, der mit dem Upgrade auf Windows 11 zusammen hängt, wie er annimmt. Dazu schrieb er mir:

Ursächlich dafür, soweit meine Auswertungen einer versuchten Neuinstallation, ist die Konsistenzprüfung der SQL-Server-Instanz beim Start selbiger.

Offensichtlich wurde durch das Upgrade auf Windows 11 die Sektorengröße auf einen Wert (in diesem Fall: 32768 = 32KB) verändert, der durch keine aktuelle SQL-Server-Version supportet wird.

Die Lösung, die Philipp schließlich realisiert hat, lautet: Abhilfe schuf letztlich nur die Installation des SQL-Servers auf einem sekundären Datenträger mit Standard 4KB ClusterSektorgröße. So ganz verstehe ich zwar noch nicht, warum sich die Sektorgröße beim Windows 11-Upgrade verändert. Aber vielleicht hilft das jemandem weiter. Jedenfalls danke an Philipp für den Hinweis.

Eine Erklärung Microsofts

Ergänzung: Das Schwarmwissen hilft mal wieder weiter. Nachdem ich den Beitrag hier veröffentlicht und einen Link in diversen Admin-Gruppen auf Facebook gepostet habe, wies mich Lars L. auf den Beitrag Troubleshoot errors related to system disk sector size greater than 4 KB hin, der sich mit SQL-Server und Windows 11 befasst und am 25.1.2022 letztmalig aktualisiert wurde – hatte ich bei meiner Suche leider nicht gefunden. Hier einfach die betreffenden Abschnitte herausgezogen.


Anzeige

This article provides solutions for troubleshooting errors during installation or starting SQL Server on Windows 11 related to system disk sector size greater than 4 KB.

Cause

During service startup, SQL Server begins the database recovery process to ensure database consistency. Part of this database recovery process involves consistency checks on the underlying filesystem before attempting the activity of opening system and user database files.

On systems running Windows 11, some new storage devices and device drivers will expose a disk sector size greater than the supported 4 KB sector size.

When this occurs, SQL Server will be unable to start due to the unsupported file system as SQL Server currently supports sector storage sizes of 512 bytes and 4 KB.

Im Supportbeitrag ist beschrieben, wie man mit:

fsutil fsinfo sectorinfo <volume pathname>

das dann prüfen könnte.

Diskussion: Samsung SSD 980 schuld

Ergänzung: Ein weiterer Leser hat mich auf diese Diskussion bei Microsoft von Sept. 2021 hingewiesen. Ein Betroffener beschrieb seine Beobachtungen wie folgt:

Windows 11 – Unable to start MSSQLSERVER service

Hi,
I have upgraded my windows 10 Pro to Windows 11, these are the current specs:

Device name DESKTOP-M331UEJ
Processor AMD Ryzen 7 5800X 8-Core Processor 3.80 GHz
Installed RAM 32.0 GB
System type 64-bit operating system, x64-based processor
Edition Windows 11 Pro Insider Preview
Version Dev
Installed on ‎ 2021-‎09-‎05
OS build 22449.1000
Experience Windows Feature Experience Pack 1000.22449.1000.0

After the update, the MSSQL server 2019 can't start.
This is the error from the Event Viewer:

  1. MSSQLSERVER
  2. Error: 1067. The process terminated unexpectedly.
  3. Faulting application name: sqlservr.exe, version: 2019.150.4153.1, time stamp: 0x60f610ce
  4. Faulting module name: ntdll.dll, version: 10.0.22449.1000, time stamp: 0x05321977
  5. Exception code: 0xc0000005
  6. Fault offset: 0x0000000000035f8e
  7. Faulting process id: 0x2ad4
  8. Faulting application start time: 0x01d7a2f27a6bc3c3
  9. Faulting application path: C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn\sqlservr.exe
  10. Faulting module path: C:\WINDOWS\SYSTEM32\ntdll.dll
  11. Report Id: 1796a874-3c3f-467f-a923-4cfe5b7ae754
  12. Faulting package full name:
  13. Faulting package-relative application ID:

This is my personal development machine with single SSD, of disk size 4096 KB! The the IOs are misaligned, and the only fix for this problem is to run the MSSQL service with the 1800 Trace Flag. (Enables SQL Server optimization when disks of different sector sizes are used for primary and secondary replica log files, in SQL Server Always On and Log Shipping environments. This trace flag is only required to be enabled on SQL Server instances with transaction log file residing on disk with sector size of 512 bytes. ) Is this a bug on Windows 11 side? Sql server side? And can we expect a fix for this?

Andere Benutzer haben dieses Problem bestätigt. Einige Leser bestätigten das Problem in Verbindung mit Samsungs SSD 980 (die Samsung 980 Pro SSD scheint zu funktionieren). Die in dieser Diskussion vorgeschlagene Lösung ist entweder: Erstellen Sie eine virtuelle Festplatte (VHD) und verwenden Sie diese, um MS SQL-Server zu installieren. Oder MS SQL-Server auf einem separaten Laufwerk installieren.


Cookies blockieren entzieht uns die Finanzierung: Cookie-Einstellungen

Dieser Beitrag wurde unter Windows abgelegt und mit , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

22 Antworten zu Windows 11: MSSQL-Server-Instanz wegen Sektorengröße nicht mehr lauffähig

  1. Elix sagt:

    Hmm, das klingt nicht so ganz fundiert um ehrlich zu sein. Cluster- und Sektorgröße werden hier durcheinander geworfen.
    Die Clustergröße wird beim Formatieren eines Datenträgers festgelegt und kann nicht nachträglich geändert werden. Microsoft empfiehlt Datenträger, die Datenbankinstanzen beinhalten mit NTFS und einer Clustergröße von 64k zu formatieren.

    • MOM20xx sagt:

      das mit der Clustergröße is halt auch so eine Sache, die vermutlich veraltet ist Ansich je grösser die Clustergröße bei grossen Dateien ist umso weniger fragementiert wird diese sein. Selbst ein Server 2016 konnte bereits mehr als 64k Clustergrösse. Vermutlich wäre die grösste Clustergröße auch am optimalsten für SQL Server, aber dazu müsst halt mal wieder einer die Doku aktualisieren.

      • Elix sagt:

        Der MS SQL Server organisiert seine IOs in sog. Extends die jeweils acht Pages beinhalten. Jede Page ist 8k groß, macht also pro Extend 64k. Das ist der Grund weshalb eine NTFS Clustergröße von 64k nach wie vor aktuell und richtig ist, auch wenn NTFS inzwischen Größen bis zu 2Mb erlaubt, je nachdem wie groß der Datenträger ist.
        Bzgl. der Fragmentierung: Richtig, je größer die Clustersize, desto weniger stark ist die Fragmentierung, was bei SSDs allerdings kaum noch eine Rolle spielt. Viel wichtiger ist, dass mit steigender Clustergröße der Verschnitt des Speicherplatzes wächst. Für Datenträger mit gemischten Dateien kann beim Formatieren getrost der vorgeschlagene Wert für die Clustergröße beibehalten werden.

    • Günter Born sagt:

      Ok, der Leser hat sich per PM gemeldet und bat "Clustergröße" in "Sektorengröße" zu ändern – er schrieb "war schon spät in der Nacht", und ich habe nachgesehen, er hat den Beitrag um 02:02 Uhr abgesetzt. Also nix alles auf die Goldwage legen ;-).

      Hier der Vollständigkeit halber seine Antwort in den relevanten Teilen:

      Es steht wohl primär im Zusammenhang mit der eingesetzten Samsung NVMe SSD.

      Windows 11 und scheinbar auch Windows Server 2022 übermitteln offensichtlich keine korrekten bzw. kompatiblen Werte für „PhysicalSectorSizeInBytes".

      Mir ist nicht bekannt warum dies so geändert bzw. ausgegeben wird.

      Und bitte im letzten Absatz „Clustergröße" durch „Sektorengröße" ersetzen.
      Es war schon spät letztens ;-)

      • Günter Born sagt:

        Ok, und nun beachtet ihr die Ergänzung, die ich im Text nachgetragen habe. Ein Admin hat mich auf Facebook auf die relevanten Abschnitte in den Microsoft SQL-Troubleshooting-Artikeln hingewiesen. Die Schlussfolgerungen von Philipp trafen den Sachverhalt im Nachgang zwar nicht so genau – beschreiben aber das Problem bzw. die Änderung, die von MS für Windows 11 dokumentiert wurde.

      • Herr IngoW sagt:

        Wenn es die "Samsung SSD 980 Pro, NVMe" war.
        Für diese gab es ein Firmware-Update, Version 5B2QGXA7.
        Vielleicht hat das damit zu tun, wurde eventuell was korrigiert?
        Bei "Dr. Windows" wird zwar nur über die Leistung gesprochen aber wer weiß.

  2. der bug ist das ziel sagt:

    irgendwann las ich mal vor urzeiten einen interessanten tech artikel das ein microsoft sql server quasi ein virtuelles betriebssystem an sich sei was nur in/auf windows quasi als untersatz laufe. das sei historisch so entwickelt und codiert worden. ich kann mir durchaus vorstellen dass das ding so krasse hardwarenahe programmierung in ihren datenbank rohdatei loadern hat dass es ploetzlich mit neuem windows als outer subsystem dann mit anderen sektorengroessen data load events und aligngments oder anordnungen im ram etc nichtmehr zurecht kommt.

    das wuerde mir jetzt als ansatz dazu einfallen. warum microsoft ploetzlich sektorengroessen oder auch cluster und alles was mit hineinspielt so krass veraendert oder die unendlich vielen enwickler-teams und schnittstellen leute, api leute etc bei microsoft intern da echt so sehr den ueberblick und die zusammenhaenge verlieren, das ist schon der wahnsinn.

    komplexitaet erschlaegt alles :( was ist bloss aus der welt geworden bzw wohin soll das alles noch fuehren. moderne zivilisationen wirklich auf dem absteigenden ast…..

  3. Robert Glöckner sagt:

    das mit der Sektorengröße ist etwas eigenartig.
    früher hatten wir 512Bytes/Sektor. mit größeren Festplatten im TB-Bereich wurde auf 4kBytes/Sektor erhöht und für Betriebssysteme, die das nicht können konnte weiterhin die kleine Sektorgröße verwendet werden, mit dem Nachteil, dass die max Partitionsgröße zumindest der Bootpartition beschränkt war. das jetzt schon 32K/Sektor verwendet werden ist für mich auch neu. ich spekuliere mal, dass nur das Betriebssystem so tut als ob die Sektoren 32K groß wären, warum auch immer.
    Cluster wurden erfunden, weil deren Größe zur Verwaltung größerer Partitionen verhalf, ein unsigned long kann nur 2^32 Elemente.
    Neulich hatte ich den Fall, dass der SQL-Server bei 500GB aufgehört hat in eine Datenbank zu schreiben, weil sie zu viele Fragmente hatte – 4K Cluster und eine zu kleine Wachstumsrate. Der MSSQL verwaltet seine Dateien selbst und verwendet wohl Sektoren als kleinste Einheit. das mit den 32K muss aber ein Fehler sein, dazu finde ich nirgends etwas.
    Und: seit Windows 8 gibt es auch Bereiche (slabs), die normal 8MB groß sind, in der MFT landen alle Dateien kleiner 1MB v.a. um nicht lauter halbvolle Cluster zu bekommen.

  4. Jackie sagt:

    Wie andere schon erwähnt haben, es würde mich wundern wenn sich die Clustergröße während des Upgrades geändert hätte, denn dazu hätte das Laufwerk eigentlich neu formatiert werden müssen. Ich tippe auf irgendeinen Murks mit den Berechtigungen im Programmverzeichnis oder sowas. Vielleicht lief die vorherige Installation auch mit irgendeinem kruden Benutzer. Naja schade denn wir werden es wohl nie herausfinden.

    • Günter Born sagt:

      Müssen wir einfach abwarten. Der Leser ist über den Blog-Beitrag informiert, kann sich bei Bedarf hier also äußern – und falls es die Sache hergibt, ggf. bei Gelegenheit beim Kunden nochmals nachsehen (obwohl es schwierig ist, denn wer zahlt so was, es läuft ja).

      Ansonsten fungiert dieser Beitrag wieder als "Honeypot". Mag kaputte Berechtigung oder irgend etwas Krummes gewesen sein. Dann bleibt es Einzelfall. Wenn aber wirklich eine Macke vorliegt, schlägt früher oder später der eine oder andere Betroffene hier ein.

      Es gibt Blog-Beiträge, die sind 2-3 Jahre alt – bei Veröffentlichung gab es keine oder kaum Reaktionen, aber 2021 und 2022 tröpfeln plötzlich wieder Kommentare, weil das Problem wieder aktut wurde.

      Danke an Alle für den Input – ist ja das Ziel, dass das sachgerecht hier diskutiert werden kann – auch wenn die Erklärungen nicht immer stichhaltig ausschauen mögen – mit Schwarmwissen kriegen wir es ggf. gebacken – oder stellen fest: War nüscht – und das ist ja auch schon was ;-).

  5. Michael Uray sagt:

    Die SQL Server haben eine Einschränkung der Sektor-Größe von 4kb, ich bin gerade vor ein paar Tagen beim Anlegen einer iSCSI LUN darüber gestolpert.

    "SQL Server currently supports disk drives that have standard native sector sizes of 512 bytes and 4 KB. Hard disks with sector sizes larger than 4 KB may cause errors when attempting to store SQL Server data files on them."
    https://docs.microsoft.com/en-us/sql/sql-server/install/hardware-and-software-requirements-for-installing-sql-server-ver15?view=sql-server-ver15

    Ich nehme einmal an, in dem Bericht war immer die Sektor- und nicht die Clustergröße gemeint.

    Doch woher sollte diese Sektorgröße > 4 KB denn kommen, mit welcher der SQL Server dann nicht mehr klar kam?
    Die Hersteller liefern ihre HDDs eigentlich mit 4 kb oder 512 b aus, war hier eventuell ein Raid Controller oder ein iSCSI Target mit im Spiel?

    Mir ist jetzt aufgefallen, dass bei mir meine beiden SSDs unter W10 mit
    LogicalSectorSize : 512
    PhysicalSectorSize : 4096
    angegeben sind.

    Eigentlich werden seit W8 Sektoren in 4KB nativ und ohne 512 b Emulation unterstützt, dennoch läuft bei mir anscheinend 512e. Warum ist dies denn so?
    https://docs.microsoft.com/en-us/troubleshoot/windows-server/backup-and-storage/support-policy-4k-sector-hard-drives

    Eventuell ist hier wirklich beim Update auf W11 etwas passiert, dass jetzt bei ihm auf einmal 4k native verwendet wird.

    Mich würde ja interessieren, was der folgende Powershell Befehl auf seinem System so ausgibt für die beiden Platten:
    "Get-Disk | Format-List"

  6. Markus K. sagt:

    Kann ich alles nicht nachvollziehen. Bei uns hat die Migration auf Windows 11 problemlos geklappt. MS SQL 2019 läuft weiterhin einwandfrei.

  7. Robert Glöckner sagt:

    vorhin habe ich gelernt, dass das Problem bei uns auch schon aufgeschlagen ist und es gibt einen Workaround:

    reg add "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes" /t reg_multi_sz /d "* 4095" /f

    bitte nur anwenden unter Windows 11/Server 2022 wenn die Sektorgröße > 4096 ist
    danach den Rechner neu starten

    • FriedeFreudeEierkuchen sagt:

      danke für den Hinweis. Kannst du noch genauer erklären, was der Reg Eintrag genau macht?

    • Klaus W. sagt:

      Danach habe ich seit dem W11-Release gesucht. Habe mir extra eine andere SSD gekauft, damit alles wieder läuft. Die Samsung SSD 980 habe ich in einen unkritischen Rechner verpflanzt.
      Und jetzt läuft wieder alles.
      Danke für den Tipp.

  8. Brueni sagt:

    Liegt ein Workaround nicht schon in der Verwendung des Startparameters "-T1800", also dem Setzen des "trace flag 1800", den der englischsprachige Text erwähnte?
    Bei mir hat es jedenfalls geklappt.

    Oder hat die Verwendung des "trace flag 1800" kritische Nachteile?

  9. Matthias sagt:

    Danke für den Artikel – stand ebenfalls vor dem
    Problem – und hatte eine Samsung 980 verbaut – mit einer 970evo lief es dann 🤷🏼‍♂️

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Bitte beachtet die Regeln zum Kommentieren im Blog (Erstkommentare und Verlinktes landet in der Moderation, gebe ich alle paar Stunden frei, SEO-Posts/SPAM lösche ich rigoros). Kommentare abseits des Themas bitte unter Diskussion.