Problembeschreibung
Stellen Sie sich folgendes Szenario vor:
-
Sie haben eine SQL Server AlwaysOn-verfügbarkeitsgruppe und einen Verfügbarkeitsgruppen-Listener bereitgestellt.
-
AlwaysOn-Integritäts Erkennung erkennt ein Gesundheitsproblem mit dem SQL Server, der das primäre Replikat hostet, und beginnt mit dem Übergang der verfügbarkeitsgruppe von der primären Rolle zur Auflösungs Rolle. Ein Teil davon umfasst das offline schalten der Listener-Ressource für Verfügbarkeitsgruppen.
-
Der Vorgang, der versucht, die Listener-Ressource zu beenden, wird möglicherweise nicht abgeschlossen, und die SQL Server-nicht-Yield-Dump-Diagnose meldet den Absturz als "nicht-yielding Scheduler" im SQL Server-Fehlerprotokoll.
-
Der Vorgang stürzt möglicherweise unbegrenzt ab, wenn Sie versuchen, den Listener der verfügbarkeitsgruppe zu beenden, wenn er unbeaufsichtigt bleibt.
In diesem Szenario bleiben verfügbarkeitsdatenbanken in der verfügbarkeitsgruppe im Wiederherstellungsmodus und können nicht online geschaltet werden. Ihnen werden die folgenden Fehlermeldungen angezeigt:
<Datum> <Uhrzeit> <Servernamen> * * * Threadkontext für SPID 0 konnte nicht abgerufen werden< Datum> <Uhrzeit> <Servername> <1 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *> <8> <7> <> <> <2> <4 Datum> <Uhrzeit> <Server Name> <9 *> <0 Datum> < Uhrzeit> <3 SPID 1068> <4 Datum> <Uhrzeit> <Servername> <9 *> <0 Datum #d20 Uhrzeit> <Server Name> <5 * nicht-yielding -Planer> <6 Datum> <Uhrzeit> <Servername>*<Datum> < Uhrzeit> <Servername>* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 0x0000000000000176>> <> <<
Ursache
Das Problem tritt auf, weil der Thread die Listener-Ressourcensperre beendet und nicht abläuft. Dieser nicht nachgiebige Thread blockierte andere Threads auf demselben Prozessor, die andere Threads blockierten, die versuchten, die verfügbarkeitsdatenbanken wiederherzustellen.
Fehlerbehebung
Das Problem wurde zuerst im folgenden kumulativen Update von SQL Server behoben.
Kumulatives Update 9 für SQL Server 2012 SP1 /en-us/help/2931078
Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und alle Sicherheitsupdates, die im vorherigen kumulativen Update enthalten waren. Schauen Sie sich die neuesten kumulativen Updates für SQL Server an:
Status
Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.