Проблемы
Рассмотрим следующий сценарий.
-
Процедура запускается в Microsoft SQL Server 2014 или SQL Server 2012.
-
Процедура содержит запрос со следующими условиями:
-
Она присоединяется к таблице, которая обновляется очень часто.
-
У него есть предложение WHERE, содержащее параметры.
-
Она использует параметр (перекомпилируйте).
-
-
Эта процедура выполняется для нескольких одновременных подключений с разными наборами значений параметров.
-
Сервер сильно загружен, и это приводит к тому, что каждая из этих процедур может занять больше времени, чем обычно.
В этом случае вы можете получать неверные результаты процедуры, которая выполняется для вашего соединения, если в течение интервала времени между компиляцией запроса и запуском выполнения запроса в соединении выполняются следующие дополнительные условия:
-
Условие 1: другое параллельное соединение вносит изменения в Объединенную таблицу, достаточно большие, чтобы активировать другую перекомпиляцию запроса в вашем соединении.
-
Условие 2: один и тот же запрос был повторно скомпилирован из другого соединения и затем помещен в кэш.
Важно! Этот временный вопрос очень редкий.
Причина
Эта проблема возникает из-за того, что значения параметров запроса изменяются на неверные значения после выполнения запроса в соединении. Это происходит из-за очень редких проблем с синхронизацией между параллельными компиляциями.
Решение
Эта проблема впервые устранена в следующем накопительном обновлении SQL Server.
Накопительное обновление 4 для SQL Server 2014 /en-us/help/2999197
Накопительное обновление 2 для SQL Server 2012 SP2 /en-us/help/2983175
Накопительное обновление 11 для SQL Server 2012 с пакетом обновления 1 (SP1) /en-us/help/2975396
Все новые накопительные обновления для SQL Server содержат все исправления и все исправления для системы безопасности, которые были включены в предыдущий накопительный пакет обновления. Ознакомьтесь с самыми последними накопительными обновлениями для SQL Server.
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".