KB2727322 - ИСПРАВЛЕНО: возвращаются неправильные результаты при выполнении запроса, использующего параллелизм в плане выполнения запроса в SQL Server 2008, в SQL Server 2008 R2 или в SQL Server 2012

Применяется к
SQL Server 2008 Service Pack 3 SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Standard SQL Server 2008 Web SQL Server 2008 Standard Edition for Small Business SQL Server 2012 Business Intelligence SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2012 Enterprise Core SQL Server 2012 Web SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2008 R2 Web

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

Проблема

Предположим, что вы выполняете запрос, использующий параллелизм в плане выполнения запроса в SQL Server 2008, SQL Server 2008 R2 или SQL Server 2012. План запроса удовлетворяет следующим условиям.

  • План выполнения запроса содержит оператор Bitmap и либо хэш-соединение, либо соединение слиянием.
  • Предикат хэш-соединения или соединения слиянием содержит сравнение IS для столбцов, которые могут иметь значение NULL.

В этом случае запрос возвращает неправильные результаты.

Причина

Эта проблема возникает из-за того, что значение NULL отбрасывается, когда SQL Server использует фильтрацию растровых изображений при сканировании таблицы или индекса.

Решение

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

Накопительный пакет обновления 1 для SQL Server 2012 с пакетом обновления 1 (SP1)

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

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

2772858 Сборки SQL Server 2012 г., выпущенные после выпуска SQL Server 2012 с пакетом обновления 1 (SP1)

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

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

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

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

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

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

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

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

SQL Server 2012

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

2723749 Накопительный пакет обновления 3 для SQL Server 2012 г. Заметка Поскольку сборки являются накопительными, каждый новый выпуск исправления содержит все исправления и исправления для системы безопасности, которые были включены в предыдущий выпуск исправления SQL Server 2012 г. Корпорация Майкрософт рекомендует рассмотреть возможность применения последнего выпуска исправления, содержащего это исправление. Для просмотра статьи в базе знаний Майкрософт щелкните следующий номер статьи:

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

SQL Server 2008 с пакетом обновления 3 (SP3)

Исправление для этой проблемы было впервые выпущено в накопительном пакете обновления 6 для SQL Server 2008 с пакетом обновления 3 (SP3). Дополнительные сведения об этом накопительном пакете обновления см. в следующей статье базы знаний Майкрософт:

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

2629969 Сборки SQL Server 2008 г., выпущенные после выпуска SQL Server 2008 с пакетом обновления 3 (SP3) Исправления для Microsoft SQL Server 2008 предназначены для определенных пакетов обновления SQL Server. Установите исправление пакета обновления 3 для SQL Server 2008 с пакетом обновления 3 (SP3) для SQL Server 2008 с пакетом обновления 3. По умолчанию все исправления, предоставляемые в пакете обновления для SQL Server, входят в следующий пакет обновления для SQL Server.

Состояние

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

Временное решение

Чтобы обойти эту проблему, избегайте использования параллелизма в запросе, применив один из методов:

  • Добавление параметра подсказки запроса MAXDOP 1.
  • Установите для параметра «Максимальная степень параллелизма» значение 1.

Дополнительные сведения

Дополнительные сведения о параллельных хэш-соединениях см. на следующих веб-сайтах блогов MSDN:

Общие сведения о параллельных хэш-соединениях Дополнительные сведения о фильтрах растровых изображений выполнения запросов см. на следующих веб-сайтах блогов MSDN:

Общие сведения о выполнении запросов Растровые фильтры