KB963659 — FIX: при выполнении Генеральной совокупности для большого полнотекстового индекса в SQL Server 2008 или SQL Server 2008 R2 появляются сообщения об ошибках.

Применимо к: SQL Server 2008 StandardSQL Server 2008 EnterpriseSQL Server 2008 Developer

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

Проблемы


Симптом 1При заполнении большого полнотекстового индекса в Microsoft SQL Server 2008 или Microsoft SQL Server 2008 R2 может появиться сообщение об ошибке в файле журнала полнотекстового доступа. Количество событий, которые регистрируются в этом сообщении об ошибке, зависит от размера пакета минус один. Например, на 32-разрядном компьютере размер пакета равен 1 000, поэтому ошибка регистрируется 999. Сообщение об ошибке похоже на следующее:
Ошибка "0x8004cb04: список слов в памяти поврежден. Это связано с неправильной фильтрацией, средством разбиения по словам или другим компонентом индексирования. "произошла ошибка при заполнении полнотекстового индекса для таблицы или индексированного представления" [smarsh]. [dbo]. [ArchiveMsgs] "(идентификатор таблицы или индексированного представления" 160719625 ", идентификатор базы данных" 7 "), значение полнотекстового ключа" 291484087 ". Попытка переиндексировать ее.
После появления этого сообщения об ошибке может появиться следующее сообщение об ошибке для размера пакета минус один:
<Дата> <время> ошибка spid28s "0x80040e28" во время заполнения полнотекстового индекса для таблицы или индексированного представления [smarsh]. [dbo]. [ArchiveMsgs] "(идентификатор таблицы или индексированного представления" 160719625 ", идентификатор базы данных" 7 "), значение полнотекстового ключа" 199598211 ". Попытка переиндексировать ее.
После появления этого сообщения об ошибке может появиться следующее сообщение об ошибке для размера пакета минус один:
<Дата> <время> ошибка spid26s "0x80043630: время ожидания процесса демона фильтра MSFTEFD истекло по неизвестной причине. Это может указывать на ошибку в фильтре, средстве разбиения по словам или обработчике протокола. при заполнении полнотекстового индекса для таблицы или индексированного представления "[smarsh]" произошла ошибка. [dbo]. [ArchiveMsgs] "(идентификатор таблицы или индексированного представления" 160719625 ", идентификатор базы данных" 7 "), значение полнотекстового ключа" 14304130 ". Попытка переиндексировать ее.
Симптом 2Кроме того, вы можете заметить, что процесс FDHOST. exe работает неправильно. При попытке выполнить полнотекстовый запрос или выполнить полнотекстовое заполнение на клиенте возвращается следующее сообщение.
Сообщение 30053, уровень 16, состояние 102, время выполнения строки 1Word превышено для строки запроса полнотекстового поиска. Это может быть вызвано тем, что для обработки строки полнотекстового запроса в средстве разбиения по словам требуется много времени или если на сервере запущено большое количество запросов. Попробуйте выполнить запрос еще раз под более легкой загрузкой.
При просмотре журналов SQLFT * для этого каталога вы увидите следующее сообщение об ошибке:
При заполнении полнотекстового индекса для таблицы или индексированного представления "[DBNAME]" произошла ошибка "0x80004005". [dbo]. [Имя_таблицы] "(идентификатор таблицы или индексированного представления" 1204001724 ", идентификатор базы данных" 5 "), значение полнотекстового ключа" 4 ". Попытка переиндексировать ее.
При анализе ошибки SQL вы увидите следующее сообщение об ошибке:
Ошибка: 30089, важность: 17, состояние: 1. процесс хоста управляющей программы полнотекстовой фильтрации (FDHost) остановлен аварийно. Это может произойти, если неправильно настроенные или неработающие лингвистические компоненты, такие как средства разбиения по словам, парадигматические модули или фильтр, вызвали ошибку irrecoverable во время полнотекстового индексирования или обработки запроса. Процесс будет автоматически перезапускаться.

Причина


Эта проблема возникает из-за ошибки связи между процессом sqlservr. exe и процессом fdhost. exe. Если пакеты отправляются из процесса sqlservr. exe в процесс fdhost. exe, иногда в исходящей общей памяти (OSM), которая является общей памятью из sqlservr. exe, в fdhost. exe, недостаточно места для размещения следующего столбца документа. Когда это произойдет, процесс Sqlservr. exe отправляет сообщение для уведомления процесса fdhost. exe о том, что вы обрабатываете все существующие данные в OSM. Несмотря на то, что процесс fdhost. exe обрабатывает данные, входящая общая память (ISM), представляющая собой общую память из fdhost. exe на sqlservr. exe, может быть заполнена. В этой ситуации процесс fdhost. exe отправляет сообщение "Перемотка назад" в процесс Sqlservr. exe. Это сообщение требует, чтобы процесс Sqlservr. exe повторно отправлял последний документ из первого столбца. Однако при запуске процесса sqlservr. exe повторно отправить документ начинается с столбца 2, а не из столбца 1. Это приводит к появлению сообщений об ошибках, описанных в разделе "проблема".

Решение


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

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

Исправление для этой проблемы впервые выпущено в накопительном обновлении 3. Для получения дополнительных сведений о том, как получить этот накопительный пакет обновления для SQL Server 2008 R2 с пакетом обновления 2 (SP2), щелкните следующий номер статьи базы знаний Майкрософт:
2754552 Накопительный пакет обновления 3 для SQL Server 2008 R2 с пакетом обновления 2 (SP2)
Примечание. Так как сборки являются кумулятивными, каждый новый выпуск исправлений содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск пакета обновления 2 (SP2) для SQL Server 2008 R2. Рекомендуется установить последнюю версию исправления, которая включает это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
2730301 Сборки SQL Server 2008 R2, выпущенные после выпуска SQL Server 2008 R2 с пакетом обновления 2 (SP2)

SQL Server 2008

Исправление для этой проблемы впервые выпущено в накопительном обновлении 4 для выпускной версии SQL Server 2008. Для получения дополнительных сведений о том, как получить этот накопительный пакет обновления для SQL Server 2008, щелкните следующий номер статьи базы знаний Майкрософт:
963036 Накопительный пакет обновления 4 для SQL Server 2008
Примечание. Так как сборки являются кумулятивными, каждый новый выпуск исправлений содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправлений для SQL Server 2008. Рекомендуется установить последнюю версию исправления, которая включает это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
956909 Сборки SQL Server 2008, выпущенные после выпуска SQL Server 2008

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

Исправление для этой проблемы впервые выпущено в накопительном обновлении 1 для SQL Server 2008 с пакетом обновления 1 (SP1). Для получения дополнительных сведений о том, как получить этот накопительный пакет обновления для SQL Server 2008, щелкните следующий номер статьи базы знаний Майкрософт:
969099 Накопительный пакет обновления 1 (SP1) для SQL Server 2008 с пакетом обновления 1 (SP1)
Примечание. Так как сборки являются кумулятивными, каждый новый выпуск исправлений содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправлений для SQL Server 2008. Рекомендуется установить последнюю версию исправления, которая включает это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
970365 Сборки SQL Server 2008, выпущенные после выпуска пакета обновления 1 (SP1) для SQL Server 2008

Обходное решение


Чтобы обойти эту проблему, измените размер ISM. Для этого настройте переменную ISM_Size с помощью хранимой процедуры sp_fulltext_service . Чтобы показать текущее значение:sp_fulltext_service "ism_size" для изменения значения на 16:sp_fulltext_service "ism_size", @value = 16Примечание. чтобы это изменение вступило в силу, необходимо перезапустить службу SQL Server.

Статус


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

Дополнительная информация


Эта проблема не препятствует завершению Генеральной совокупности. Полнотекстовый индекс содержит встроенную логику повтора, которая продолжает повторять неудачную операцию, пока не завершится успешно. Таким образом, вы можете спокойно проигнорировать сообщения об ошибках. Единственными известными потенциальными негативными побочными эффектами является то, что для завершения Генеральной совокупности может потребоваться больше времени, чем обычно, а для отчетов об ошибке значительно возрастает рост полнотекстового журнала. Логика повторов в исходном коде приводит к успешному завершению Генеральной совокупности без повреждения индекса, несмотря на сообщение об ошибке, которое указывает на возможное повреждение. Если вы столкнулись с симптомами #2 , описанными выше, запросы и заполнение полнотекстового поиска не будут работать, поскольку компонент FDHOST не находится в нужном состоянии, и вам потребуется установить это накопительное обновление.

Дополнительные сведения о накопительном пакете обновления 4 для SQL Server 2008

Для получения дополнительных сведений о том, какие файлы изменились, и о предварительных требованиях, необходимых для применения накопительного пакета обновления, содержащего исправление, описанное в этой статье Microsoft Knowledge Base, щелкните следующий номер статьи, чтобы просмотреть статью в базе знаний Майкрософт:
963036 Накопительный пакет обновления 4 для SQL Server 2008

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

Для получения дополнительных сведений о том, какие файлы изменились, и о предварительных требованиях, необходимых для применения накопительного пакета обновления, содержащего исправление, описанное в этой статье Microsoft Knowledge Base, щелкните следующий номер статьи, чтобы просмотреть статью в базе знаний Майкрософт:
969099 Накопительный пакет обновления 1 (SP1) для SQL Server 2008 с пакетом обновления 1 (SP1)

Ссылки


Чтобы получить дополнительные сведения о списке сборок, доступных после выпуска SQL Server 2008, щелкните следующий номер статьи базы знаний Майкрософт:
956909 Сборки SQL Server 2008, выпущенные после выпуска SQL Server 2008
Чтобы получить дополнительные сведения о модели добавочного обслуживания для SQL Server, щелкните следующий номер статьи базы знаний Майкрософт:
935897 Модель обслуживания изменений, используемая рабочей группой SQL Server, предоставляет модель ISM для распространения исправлений обнаруженных проблем
Чтобы получить дополнительные сведения о схеме присвоения имен обновлениям SQL Server, щелкните следующий номер статьи базы знаний Майкрософт:
822499 Новая схема присвоения имен пакетам обновлений программного обеспечения Microsoft SQL Server
Чтобы получить дополнительные сведения о терминологии обновления программного обеспечения, щелкните следующий номер статьи базы знаний Майкрософт:
824684 Стандартные термины, используемые при описании обновлений программных продуктов Майкрософт