KB4517771 - ИСПРАВЛЕНО: потерянные сеансы CLR вызывают блокировку в SQL Server

Применяется к
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

Проблема

Предположим, что для доступа к данным в Microsoft SQL Server используется сеанс, вызывающий хранимую процедуру CLR ("сеанс вызова"), и эта процедура, в свою очередь, устанавливает отдельное подключение ("второй сеанс") к тому же серверу вместо контекстного подключения. Затем, если сеанс вызова завершается из-за тайм-аута или отмены, второй сеанс может стать потерянным и будет существовать в системе до тех пор, пока не будет завершен вручную с помощью команды KILL . Если этот потерянный сеанс содержит какие-либо блокировки, другие сеансы могут быть заблокированы в ожидании снятия блокировок.

Состояние

Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».

Решение

Эта проблема устранена в следующих накопительных обновлениях для SQL Server:

Сведения о накопительных обновлениях для SQL Server:

Каждый новый накопительный пакет обновления для SQL Server содержит все исправления и исправления безопасности, которые входили в состав предыдущего накопительного пакета обновления. Ознакомьтесь с последними накопительными пакетами обновления для SQL Server

Примечание По умолчанию исправление отключено из-за необходимости сохранения унаследованного поведения потоков CLR в SQL Server. Включать его нужно только в том случае, если ваша система проявляет симптомы, указанные ранее. Чтобы включить исправление, необходимо добавить флаг трассировки 6559 на сервер с помощью параметров запуска службы ядра СУБД. Помните, что этот флаг трассировки можно использовать только вместе с параметрами запуска SQL Server. Его нельзя установить с помощью команды DBCC TRACEON .

Ссылки

Узнайте о терминологии, используемой корпорацией Майкрософт для описания обновлений программного обеспечения.