KB4013128 . ИСПРАВЛЕНИЕ. Снижение производительности и длительное ожидание CLR_AUTO_EVENT и CMEMTHREAD при использовании определяемого пользователем типа SQLCLR в качестве параметра хранимой процедуры для вызова RPC SQL

Применяется к
SQL Server 2012 Enterprise SQL Server 2012 Developer SQL Server 2012 Enterprise Core SQL Server 2012 Standard 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 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Проблема

Вы используете Microsoft SQL Server 2012, 2014 или 2016 и создаете определяемый пользователем тип (UDT) с помощью интеграции SQL Server среды CLR SQL.

При использовании определяемого пользователем типа в качестве параметра хранимой процедуры параметр передается на сервер через механизм удаленного вызова процедуры (RPC). Этот механизм внутренне пытается загрузить сборку, которая размещает определяемый пользователем тип в памяти.

В этом случае производительность выполнения хранимой процедуры может снизиться. Это происходит из-за неэффективности, которая возникает, когда RPC загружает и выгружает сборку SQLCLR непреднамеренно.

Эта проблема проявляется как длительное время ожидания для типов CLR_AUTO_EVENT и CMEMTHREAD . Это особенно верно, если несколько одновременных пользователей выполняют одну хранимую процедуру.

Решение

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

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

Пакет обновления 2 (SP2) для SQL Server 2016

Пакет обновления 3 (SP3) для SQL Server 2014

Пакет обновления 4 (SP4) для SQL Server 2012 г.

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

Пакеты обновления являются накопительными. Каждый новый пакет обновления содержит все исправления, которые были в предыдущих пакетах обновления, а также все новые исправления. Мы рекомендуем применить последний пакет обновления и последнее накопительное обновление для этого пакета обновления. Вам не нужно устанавливать предыдущий пакет обновления перед установкой последнего пакета обновления. Дополнительные сведения о последнем пакете обновления и последнем накопительном обновлении см. в таблице 1 в следующей статье.

Определение версии, выпуска и уровня обновления SQL Server и его компонентов

Состояние

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

Ссылки

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