Корпорация Майкрософт распространяет исправления 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, появляется неверный результат