KB2421014-FIX: сообщение об ошибке "серьезная ошибка в текущей команде" при использовании функции FREETEXTTABLE или CONTAINSTABLE в индексированном представлении запроса CTE в SQL Server 2008 или SQL Server 2008 R2

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

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

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединение к программе предварительной оценки Майкрософт

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

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

Благодарим за отзыв! Возможно, будет полезно связать вас с одним из наших специалистов службы поддержки Office.

×