KB4517771 – FIX: Verwaiste CLR-Sitzungen verursachen Blockierungen in SQL Server

Gilt für
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Standard on Windows SQL Server 2019 on Windows

Symptome

Angenommen, Sie verwenden eine Sitzung, die eine gespeicherte CLR-Prozedur (Common Language Runtime) aufruft, um auf Daten in Microsoft SQL Server zuzugreifen, und diese Prozedur stellt wiederum eine separate Verbindung (eine "zweite Sitzung") mit demselben Server anstelle einer Kontextverbindung her. Wenn die aufrufende Sitzung aufgrund einer Zeitüberschreitung oder eines Abbruchs beendet wird, kann die zweite Sitzung verwaist sein und im System vorhanden sein, bis sie manuell mit dem Befehl KILL beendet wird. Wenn diese verwaiste Sitzung Sperren enthält, werden andere Sitzungen möglicherweise blockiert und warten darauf, dass die Sperren freigegeben werden.

Status

Microsoft hat bestätigt, dass dies ein Problem bei den Microsoft-Produkten ist, die im Abschnitt „Gilt für“ aufgeführt sind.

Lösung

Dieses Problem wurde in den folgenden kumulativen Updates für SQL Server behoben:

Informationen zu kumulativen Updates für SQL Server:

Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und Sicherheitsfixes, die im vorherigen kumulativen Update enthalten waren. Hier finden Sie die neuesten kumulativen Updates für SQL Server.

Hinweis Der Fix ist standardmäßig deaktiviert, da das Legacyverhalten von CLR-Threading in SQL Server beibehalten werden muss. Sie müssen sie nur aktivieren, wenn Ihr System die zuvor genannten Symptome aufweist. Um die Korrektur zu aktivieren, müssen Sie dem Server das Ablaufverfolgungsflag 6559 mithilfe der Startoptionen des Datenbankmoduldiensts hinzufügen. Beachten Sie, dass dieses Ablaufverfolgungsflag nur in Verbindung mit SQL Server-Startoptionen verwendet werden kann. Sie kann nicht mit dem Befehl DBCC TRACEON festgelegt werden.

Referenzmaterial

Informieren Sie sich über die Terminologie, die Microsoft zum Beschreiben von Softwareupdates verwendet.