Перейти к основному контенту
Поддержка
Войдите с помощью учетной записи Майкрософт
Войдите или создайте учетную запись.
Здравствуйте,
Выберите другую учетную запись.
У вас несколько учетных записей
Выберите учетную запись, с помощью которой нужно войти.

Корпорация Майкрософт распространяет исправления для Microsoft SQL Server 2008 R2 с пакетом обновления 1 (SP1) или Microsoft SQL Server 2012 в одном загружаемом файле. Поскольку исправления являются кумулятивными, каждый новый выпуск содержит все исправления и все обновления для системы безопасности, которые были включены в предыдущий выпуск SQL Server 2008 R2 с пакетом обновления 1 (SP1) или SQL Server 2012.

Проблемы

Вот сценарий, описанный ниже. Вы запускаете запрос в Microsoft SQL Server 2008 R2 или Microsoft SQL Server 2012, а оптимизатор запросов создает план выполнения, который включает оператор TOP. В этом сценарии выполнение запроса может занять много времени. Например, вы запускаете запрос, подобный следующему:

SELECT TableA.Col1 FROM TableA JOIN TableB ON TableA.Col1 = TableB.Col1 WHERE TableA.Col2 = N'A' AND TableB.Col3 IN (SELECT Col1 FROM TableC )Этот запрос состоит из двух объединений. Одно соединение находится между TableB и TableC. (Это подразумевается наличием предиката IN.) Другое соединение между таблицей а и результатом первого соединения. Предикат IN возвращает значение true, если запрос находит хотя бы одну строку, которая соответствует первому предикату соединения. Таким образом, оптимизатор запросов добавляет оператор TOP в план выполнения запроса. Такой запрос может возвращать только несколько строк. Тем не менее, выполнение этого запроса может занять больше времени, чем ожидалось. В фактическом плане выполнения запроса ожидаемое количество строк значительно отличается от фактического количества строк. Это влияет на способность оптимизатора запросов точно оценивать стоимость для разных вариантов плана. Кроме того, эта ошибка может возникать при явном использовании оператора TOP или при использовании одного из указанных ниже операторов.

  • ПАРАМЕТР (FAST N)

  • ВОЗВРАТА

  • Существует

Решение

Сведения о накопительном пакете обновления

SQL Server 2008 R2 с пакетом обновления 2 (SP2)

Исправление для этой проблемы впервые выпущено в накопительном обновлении 1 для SQL Server 2008 R2 с пакетом обновления 2. Для получения дополнительных сведений о том, как получить этот накопительный пакет обновления, щелкните следующий номер статьи базы знаний Майкрософт:

2720425 Накопительный пакет обновления 1 для SQL Server 2008 R2 с пакетом обновления 2 (SP2)Примечание. Поскольку сборки являются кумулятивными, каждый новый выпуск исправлений содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправлений для SQL Server 2008 R2. Рекомендуется установить последнюю версию исправления, которая включает это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:

2730301 Сборки SQL Server 2008 R2, выпущенные после выпуска SQL Server 2008 R2 с пакетом обновления 2 (SP2)

SQL Server 2008 R2 с пакетом обновления 1 (SP1)

Исправление для этой проблемы впервые выпущено в накопительном обновлении 7 для SQL Server 2008 R2 с пакетом обновления 1 (SP1). Для получения дополнительных сведений о том, как получить этот накопительный пакет обновления, щелкните следующий номер статьи базы знаний Майкрософт:

2703282 Накопительный пакет обновления 7 для SQL Server 2008 R2 с пакетом обновления 1 (SP1)Примечание. Поскольку сборки являются кумулятивными, каждый новый выпуск исправлений содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправлений для SQL Server 2008 R2. Рекомендуется установить последнюю версию исправления, которая включает это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:

2567616 Сборки SQL Server 2008 R2, выпущенные после выпуска SQL Server 2008 R2 с пакетом обновления 1 (SP1)

SQL Server 2012

Исправление для этой проблемы впервые выпущено в накопительном обновлении 2 для SQL Server 2012. Чтобы получить дополнительные сведения об этом накопительном пакете обновления, щелкните следующий номер статьи базы знаний Майкрософт:

2703275 Накопительный пакет обновления 2 (SP2) для SQL Server 2012Примечание. Так как сборки являются кумулятивными, каждый новый выпуск исправлений содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправлений для SQL Server 2012. Корпорация Microsoft рекомендует установить последнюю версию исправления, которая включает это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:

2692828 Сборки SQL Server 2012, выпущенные после выпуска SQL Server 2012 Вы должны применить исправление SQL Server 2012 к установке SQL Server 2012.

SQL Server 2008 R2

Исправление для этой проблемы впервые выпущено в накопительном обновлении 13. Для получения дополнительных сведений о том, как получить этот накопительный пакет обновления для SQL Server 2008 R2, щелкните следующий номер статьи базы знаний Майкрософт:

2679366 Накопительный пакет обновления 13 для SQL Server 2008 R2Примечание. Поскольку сборки являются кумулятивными, каждый новый выпуск исправлений содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправлений для SQL Server 2008 R2. Рекомендуется установить последнюю версию исправления, которая включает это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:

981356 Сборки SQL Server 2008 R2, выпущенные после выпуска SQL Server 2008 R2Примечание После установки накопительного обновления включите флаг трассировки 4199, чтобы включить исправление, входящее в состав данного накопительного обновления, если выполняются указанные ниже условия.

  • В плане запроса есть оператор TOP над вложенным оператором соединения цикла (соединение 1) в правой части другого оператора APPLY/Join (присоединение 2).

  • Внешняя сторона соединения 1 содержит внешнюю ссылку на внешнюю сторону соединения 2.

  • Присоединение 1 использует предикат равенства в столбце с левой стороны, который является уникальным.

Пример такого запроса показан в разделе "проблема". (Предполагается, что в базе данных есть ограничения уникальности). Если есть другие запросы, которые содержат операторы TOP, OPTION (FAST N), IN или EXISTs, и производят похожие симптомы, но не соответствуют шаблону, описанному здесь, включите флаг трассировки 4138.Предупреждение. Если включить флаг трассировки 4138, производительность может снизиться для некоторых других запросов, содержащих операторы TOP, OPTION (FAST N), IN и EXISTs. Флаг трассировки 4138 следует использовать, только если справедливы указанные ниже условия.

  • Его влияние является подтверждение медленных запросов, использующих эти операторы.

  • Других полезных решений не существует.

  • В других запросах, содержащих похожие операторы, не обнаружены регрессии.

Статус

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

Обходное решение

Для решения этой проблемы используйте оператор LEFT OUTER JOIN или любую из нескольких подсказок ОПТИМИЗАТОРа.

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

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

Были ли сведения полезными?

Насколько вы удовлетворены качеством перевода?
Что повлияло на вашу оценку?
После нажатия кнопки "Отправить" ваш отзыв будет использован для улучшения продуктов и служб Майкрософт. Эти данные будут доступны для сбора ИТ-администратору. Заявление о конфиденциальности.

Спасибо за ваш отзыв!

×