KB4577976 . ИСПРАВЛЕНИЕ. Блокировка COMPILE возникает при выполнении множества параллельных хранимых процедур в SQL Server 2017 и 2019 годах

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

Проблема

Предположим, что автоматическая настройка запросов включена в SQL Server 2017 и 2019 годах. При выполнении множества параллельных хранимых процедур может возникнуть сценарий блокировки COMPILE при следующих условиях:

  1. Выполните хранимую процедуру.
  2. Используйте хранилище данных запросов (QDS) для принудительного выполнения плана.
  3. Выполните sp_recompile в хранимой процедуре, чтобы принудительно удалить план из кэша процедур.
  4. Запустите хранимую процедуру одновременно во многих отдельных сеансах.

Причина

После принудительного выполнения плана с помощью хранилища данных запросов и удаления его из кэша процедур план больше не кэшируется, а параллельное выполнение приводит к блокировке компиляции.

Состояние

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

Решение

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

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

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

Ссылки

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