Корпорация Майкрософт распространяет исправления Microsoft SQL Server 2008 или Microsoft SQL Server 2008 R2 как один файл для загрузки. Поскольку исправления являются кумулятивными, каждый новый выпуск содержит все исправления и исправления для системы безопасности, которые были включены в исправленный выпуск SQL Server 2008 или SQL Server 2008 R2.
Проблемы
Предположим, что у вас есть именованный экземпляр в Microsoft SQL Server 2008 или Microsoft SQL Server 2008 R2, установленной на сервере. При выполнении запроса на CTE-таблицу, использующего функцию FREETEXTTABLE или CONTAINSTABLE для индексированного представления, запрос CTE завершается сбоем, и возникает исключение нарушения прав доступа. Кроме того, появляется приведенное ниже сообщение об ошибке:
Сообщение 0, уровень 11, состояние 0, строка 0, в текущей команде произошла серьезная ошибка. Результаты, если таковые имеются, должны быть удалены.
Например, исключение нарушения прав доступа возникает при выполнении следующего кода:
WITH CTE AS (select [Key] as Key, [Rank] from FREETEXTTABLE(< indexed view name >, *, '< search string >')) SELECT * FROM CTE
Решение
Сведения о накопительном пакете обновления
SQL Server 2008 с пакетом обновления 2
Исправление для этой проблемы впервые выпущено в накопительном обновлении 4 для SQL Server 2008 с пакетом обновления 2. Чтобы получить дополнительные сведения об этом накопительном пакете обновления, щелкните следующий номер статьи базы знаний Майкрософт:
2527180 Накопительный пакет обновления 4 для SQL Server 2008 с пакетом обновления 2 (SP2)Примечание. Так как сборки являются кумулятивными, каждый новый выпуск исправлений содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправлений для SQL Server 2008. Корпорация Microsoft рекомендует установить последнюю версию исправления, которая включает это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
2402659 Сборки SQL Server 2008, выпущенные после выпуска пакета обновления 2 (SP2) для SQL Server 2008 Исправления Microsoft SQL Server 2008 создаются для конкретных пакетов обновления для SQL Server. Необходимо применить исправление для SQL Server 2008 с пакетом обновления 2 (SP2) к установке SQL Server 2008 с пакетом обновления 2. По умолчанию любое исправление, предоставленное в пакете обновления SQL Server, входит в следующий пакет обновления для SQL Server.
SQL Server 2008 R2
Исправление для этой проблемы впервые выпущено в накопительном обновлении 4. Для получения дополнительных сведений о том, как получить этот накопительный пакет обновления для SQL Server 2008 R2, щелкните следующий номер статьи базы знаний Майкрософт:
2345451 Накопительный пакет обновления 4 для SQL Server 2008 R2 Примечание. Поскольку сборки являются кумулятивными, каждый новый выпуск исправлений содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправлений для SQL Server 2008 R2. Рекомендуется установить последнюю версию исправления, которая включает это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
981356 Сборки SQL Server 2008 R2, выпущенные после выпуска SQL Server 2008 R2
Обходное решение
Чтобы обойти эту проблему, воспользуйтесь одним из описанных ниже методов.
-
Для хранения промежуточных результатов используйте представление, временную таблицу или табличную переменную, а не отв.
-
Обновите запрос, чтобы он использовал производную таблицу или вложенный запрос. Это избавляет от необходимости использовать выражение CTE.
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".
Ссылки
Дополнительные сведения о том, как использовать общие табличные выражения, можно найти на веб-сайте корпорации Майкрософт по следующему адресу:
Использование общих табличных выраженийДополнительные сведения о функции FREETEXTTABLE (TRANSACT-SQL) можно найти на веб-сайте корпорации Майкрософт по следующему адресу:
FREETEXTTABLE (Transact-SQL)Дополнительные сведения о функции CONTAINSTABLE (TRANSACT-SQL) можно найти на веб-сайте корпорации Майкрософт по следующему адресу:
Функции CONTAINSTABLE (Transact-SQL)Дополнительные сведения о том, как создавать индексированные представления, можно найти на веб-сайте корпорации Майкрософт по следующему адресу:
Создание индексированных представленийЧтобы получить дополнительные сведения о модели добавочного обслуживания для SQL Server, щелкните следующий номер статьи базы знаний Майкрософт:
935897 Модель обслуживания изменений, используемая рабочей группой SQL Server, предоставляет модель ISM для распространения исправлений обнаруженных проблемЧтобы получить дополнительные сведения о схеме присвоения имен обновлениям SQL Server, щелкните следующий номер статьи базы знаний Майкрософт:
822499Новая схема присвоения имен пакетам обновлений программного обеспечения Microsoft SQL ServerЧтобы получить дополнительные сведения о терминологии обновления программного обеспечения, щелкните следующий номер статьи базы знаний Майкрософт:
824684 Стандартные термины, используемые при описании обновлений программных продуктов Майкрософт