Корпорация Майкрософт распространяет исправления Microsoft SQL Server 2008 в виде одного загружаемого файла. Поскольку исправления являются накопительными, каждый новый выпуск содержит все исправления и исправления для системы безопасности, которые были включены в предыдущий выпуск исправления SQL Server 2008.
Проблема
Рассмотрим следующий сценарий.
- Вы выполняете параллельный запрос, использующий функцию row_number в Microsoft SQL Server 2008.
- Запрос можно выполнить с помощью вложенного запроса внутри инструкции SELECT или инструкции языка обработки данных (DML).
В этом случае вы можете столкнуться с одной из следующих проблем:
Если вы выполняете запрос внутри инструкции SELECT много раз, вы получите неправильные результаты.
Таблица может содержать неверные данные, если запрос выполняется внутри инструкции DML. Если в таблице есть ограничения, инструкция может завершиться с ошибкой из-за нарушения ограничения.
Например, инструкция INSERT может завершиться с ошибкой, и если таблица содержит первичный ключ, может произойти ошибка нарушения.
Примечание: Эти проблемы могут возникать в одной из следующих ситуаций:
- Для параметра подсказки запроса MAXDOP задано значение больше 2.
- В конфигурации сервера для параметра "Максимальная степень параллелизма" задано значение, больше 2.
Решение
Чтобы устранить эту проблему, скачайте последний пакет обновления для SQL Server 2008. Для просмотра статьи в базе знаний Майкрософт щелкните следующий номер статьи:
968382 Получение последней версии пакета обновления для SQL Server 2008 г.
Временное решение
Для временного решения этой проблемы используйте один из следующих способов:
Включение флага трассировки 4134 при применении одного из следующих обновлений:
- Накопительный пакет обновления 6 для SQL Server 2008 или более поздний накопительный пакет обновления для SQL Server 2008
- Накопительный пакет обновления 2 для SQL Server 2008 с пакетом обновления 1 (SP1) или более поздний накопительный пакет обновления для SQL Server 2008 SP1
Дополнительные сведения о том, как включить флаги трассировки, см. на следующем веб-сайте MSDN:
Обратитесь к разделу "Временное решение" в статье базы знаний Майкрософт 970198.
Для просмотра статьи в базе знаний Майкрософт щелкните следующий номер статьи:
970198 ИСПРАВЛЕНО: Вы получаете неверный результат при выполнении запроса, использующего функцию row_number в SQL Server 2008