Поделиться через


Обновление полнотекстового поиска

Обновление полнотекстового поиска до версии SQL Server 2008 выполняется во время установки, а также во время присоединения, восстановления или копирования файлов баз данных или полнотекстовых каталогов из предыдущей версии SQL Server с помощью мастера копирования баз данных.

В данном разделе обсуждаются следующие аспекты полнотекстового обновления.

  • Обновление экземпляра сервера

  • Режимы полнотекстового обновления

  • Замечания по выбору режима полнотекстового обновления

  • Миграция полнотекстовых индексов при обновлении базы данных до версии SQL Server 2008

  • Замечания по восстановлению полнотекстового каталога SQL Server 2005 в SQL Server 2008

  • Присоединение базы данных SQL Server 2005 к SQL Server 2008

Обновление экземпляра сервера

Для обновления на месте экземпляр SQL Server 2008 устанавливается параллельно с более старой версией SQL Server, после чего выполняется миграция данных в новую систему. Если в старой версии SQL Server установлен компонент Full-Text Search, его новая версия устанавливается автоматически. Параллельная установка означает, что каждый из следующих компонентов работает на уровне экземпляра SQL Server.

Компонент

Описание

Средства разбиения по словам, парадигматические модули и фильтры

Теперь каждый экземпляр SQL Server использует отдельный комплект средств разбиения по словам, парадигматические модули и фильтры, а не те версии этих компонентов, которые предоставляет операционная система. Более того, это облегчает регистрацию и конфигурацию этих компонентов. Дополнительные сведения см. в разделах Средства разбиения по словам и парадигматические модули и Фильтры полнотекстового поиска.

Узел управляющей программы фильтрации

Узлы управляющей программы полнотекстовой фильтрации — это процессы, которые безопасно загружают расширяемые компоненты индексации и запросов, созданные сторонними разработчиками (например, средства разбиения по словам, парадигматические модули и фильтры), и позволяют использовать их, не нарушая целостность средства полнотекстового поиска. Экземпляр сервера использует многопоточный процесс для всех многопоточных фильтров и однопоточный процесс для однопоточных фильтров.

ПримечаниеПримечание
В SQL Server 2008 вводится учетная запись службы для службы FDHOST Launcher (MSSQLFDLauncher). Данная служба распространяет сведения учетной записи службы среди узлов управляющей программы фильтрации определенного экземпляра SQL Server. Сведения о настройке учетной записи службы см. в разделе Как назначить учетную запись службы средства запуска FDHOST (MSSQLFDLauncher) полнотекстового поиска (диспетчер конфигурации SQL Server).

В SQL Server 2005 и более ранних версиях все полнотекстовые индексы располагались в полнотекстовых каталогах, принадлежащих файловой группе, имели физический путь и обрабатывались как файлы базы данных. В SQL Server 2008 полнотекстовый каталог представляет собой логическое понятие, виртуальный объект, обозначающий группу полнотекстовых индексов. В связи с этим новые полнотекстовые каталоги не обрабатываются как файлы базы данных с физическим путем. Однако при обновлении любого полнотекстового каталога, содержащего файлы данных, новая файловая группа создается на том же диске. Это обеспечивает соблюдение старого поведения дискового ввода-вывода после обновления. Если существует корневой путь, то любой полнотекстовый индекс размещается в новой файловой группе. Если старый путь полнотекстового каталога недействителен, то обновление будет хранить полнотекстовый индекс в той же файловой группе, в которой хранится базовая таблица, либо в случае с секционированной таблицей — в первичной файловой группе.

Дополнительные сведения об архитектуре полнотекстового поиска в SQL Server 2008 см. в разделе Архитектура компонента Full-Text Search.

ПримечаниеПримечание

Инструкции DDL языка SQL Server 2005Transact-SQL, указывающие полнотекстовые каталоги, работают правильно.

Режимы полнотекстового обновления

При обновлении экземпляра сервера до версии SQL Server 2008 пользовательский интерфейс позволяет выбрать один из следующих режимов полнотекстового обновления.

  • Импорт
    Полнотекстовые каталоги импортируются. Обычно импорт производится значительно быстрее перестроения. Например, если используется только один процессор, то импорт выполняется в 10 раз быстрее, чем перестроение. Однако в импортированных полнотекстовых каталогах не используются новые улучшенные средства разбиения по словам, добавленные в SQL Server 2008, поэтому со временем рекомендуется произвести перестроение полнотекстовых каталогов.

    ПримечаниеПримечание

    Перестроение может выполняться в многопоточном режиме; если доступно более 10 процессоров, то перестроение может выполниться быстрее импорта, если ему будет разрешено использовать все процессоры.

    Если полнотекстовый каталог недоступен, связанные полнотекстовые индексы перестраиваются. Этот параметр доступен только для баз данных SQL Server 2005.

    Дополнительные сведения о влиянии импорта полнотекстового индекса см. в подразделе «Замечания по выбору режима полнотекстового обновления» далее в этом разделе.

  • Перестроение
    Полнотекстовые каталоги перестраиваются с помощью новых и улучшенных средств разбиения по словам. Перестроение индексов может занять длительное время, а после обновления может потребоваться значительный объем ресурсов ЦП и памяти.

  • Сбросить
    Полнотекстовые индексы сброшены. Файлы полнотекстовых каталогов SQL Server 2005 удалены, но метаданные полнотекстовых каталогов и полнотекстовых индексов сохранились. После обновления для всех полнотекстовых индексов отключается отслеживание изменений и сканирование не запускается автоматически. После завершения обновления каталог останется пустым, пока не будет вручную запущено полное заполнение.

Замечания по выбору режима полнотекстового обновления

При выборе режима обновления следует учитывать следующие соображения.

  • Как используются средства разбиения по словам?

    В службу полнотекстового поиска SQL Server 2008 входят новые средства разбиения по словам и парадигматические модули. Они могут повлиять на результаты полнотекстовых запросов более ранних версий для определенного текстового шаблона или сценария. Следовательно, при выборе подходящего режима обновления важно учитывать то, как будут использоваться средства разбиения по словам.

    • Если средства разбиения по словам в используемом полнотекстовом языке не были изменены в SQL Server 2008 или если точность восстановления не играет большой роли, то использование импорта будет целесообразно. Если позднее возникнут проблемы при восстановлении, то можно будет выполнить обновление для использования новых средств разбиения по словам, выполнив перестроение полнотекстовых каталогов. Дополнительные сведения см. в подразделе «Средства разбиения по словам и импортированные полнотекстовые индексы» далее в этом разделе.

    • Если точность восстановления имеет значение, а пользователь использует средства разбиения по словам, которые были улучшены в SQL Server 2008, то целесообразно будет выполнить перестроение.

  • Были ли полнотекстовые индексы построены в целочисленных столбцах полнотекстового ключа?

    Перестроение выполняет внутренние оптимизации, которые в некоторых случаях могут увеличить производительность запросов обновленных полнотекстовых индексов. В частности, если в полнотекстовых каталогах пользователя содержатся полнотекстовые индексы, у которых столбец полнотекстового ключа базовой таблицы имеет целочисленный тип данных, то при перестроении достигается идеальная производительность полнотекстовых запросов. В данном случае рекомендуется использовать параметр Перестроение.

    ПримечаниеПримечание

    Применительно к полнотекстовым индексам в SQL Server 2008, рекомендуется, чтобы столбец, который служит полнотекстовым ключом, имел целочисленный тип данных. Дополнительные сведения см. в разделе Настройка и оптимизация производительности полнотекстовых индексов.

  • Насколько важно перевести сервер в оперативный режим?

    Импорт или перестроение отнимает много ресурсов процессора, что задерживает обновление остальных частей экземпляра сервера и перевод его в оперативный режим. Если важно перевести экземпляр сервера в оперативный режим как можно скорее, а пользователь способен выполнить после обновления заполнение вручную, то целесообразно будет использовать режим Сброс.

Использование новых средств разбиения по словам после импорта полнотекстового индекса SQL Server 2005

При импорте полнотекстового индекса SQL Server 2005 важно понимать, что в SQL Server 2008 включены новые средства разбиения по словам для множества языков, существующих в SQL Server 2005. Остались без изменения только средства разбиения по словам для английского, корейского, тайского и китайского языков (всех форм). Для других языков в SQL Server 2008 было добавлено новое поколение средств разбиения по словам, поведение которых в импортируемых полнотекстовых индексах SQL Server 2005 потенциально может немного отличаться от поведения средств разбиения по словам в SQL Server 2005.

Если полнотекстовый каталог был импортирован при обновлении базы данных SQL Server 2005 до версии SQL Server 2008, то один или несколько языков, используемых полнотекстовыми индексами в полнотекстовом каталоге, могут быть связаны с новыми средствами разбиения по словам. В данных языках при использовании в запросе новых средств разбиения по словам иногда могут возникать несоответствия между содержимым запроса и содержимым полнотекстового индекса. Это вызывается небольшой разницей в поведении между новыми и старыми средствами разбиения по словам. В данном случае для обеспечения полного соответствия между запросами и содержимым полнотекстового индекса следует выбрать одно из следующих действий.

  • Выполнить перестроение полнотекстового каталога, содержащего полнотекстовый индекс (ALTER FULLTEXT CATALOGcatalog_name REBUILD).

  • Выполнить инструкцию FULL POPULATION для полнотекстового индекса (ALTER FULLTEXT INDEX ON table_name START FULL POPULATION).

Важное примечаниеВажно!

Если в полнотекстовых каталогах используются неизмененные средства разбиения по словам (например, средства разбиения по словам для английского языка), то несоответствие возникнуть не может. При выполнении запроса будут использоваться те средства разбиения по словам, которые были использованы при создании индекса во время индексирования. Они же будут использоваться при следующих выполнениях запроса.

Дополнительные сведения о средствах разбиения по словам см. в разделе Средства разбиения по словам и парадигматические модули.

Обновление файлов пропускаемых слов до списков стоп-слов

Применявшиеся в SQL Server 2005 пропускаемые слова были заменены в SQL Server 2008 стоп-словами. После обновления базы данных от предыдущей версии до версии SQL Server 2008 файлы пропускаемых слов становятся больше неприменимыми в SQL Server 2008. Но старые файлы пропускаемых слов хранятся в папке FTDATA\FTNoiseThresaurusBak, и их можно использовать в дальнейшем при обновлении или построении соответствующих списков стоп-слов SQL Server 2008.

После обновления.

  • Если файлы пропускаемых слов в установке SQL Server 2005 не добавлялись, не изменялись и не удалялись, то системный список стоп-слов будет соответствовать всем требованиям.

  • Если файлы пропускаемых слов в SQL Server 2005 были изменены, эти изменения в процессе обновления будут потеряны. Чтобы воссоздать эти изменения, необходимо вручную внести их в соответствующий список стоп-слов SQL Server 2008. Дополнительные сведения см. в разделе ALTER FULLTEXT STOPLIST (Transact-SQL).

  • Если использование стоп-слов в полнотекстовом индексе не требуется (например, если файлы пропускаемых слов в SQL Server 2005 были удалены или очищены), необходимо отключить список стоп-слов для каждого обновленного полнотекстового индекса. Выполните следующую инструкцию Transact-SQL (заменив параметр database на имя обновленной базы данных, а table — на имя таблицы).

    Use database; 
    ALTER FULLTEXT INDEX ON table
       SET STOPLIST OFF;
    GO
    

    Предложение STOPLIST OFF удаляет фильтрацию по стоп-словам; таблица будет заполняться без фильтрации неучитываемых слов.

Резервные копии полнотекстовых каталогов и импортированные полнотекстовые каталоги

Для полнотекстовых каталогов, которые были восстановлены или сброшены во время обновления (и для новых полнотекстовых каталогов) полнотекстовый каталог является логическим понятием. Он не располагается в файловой группе. Следовательно, чтобы создать резервную копию полнотекстового каталога в SQL Server 2008, следует определить все файловые группы, содержащие полнотекстовый индекс каталога, а затем последовательно создать резервные копии всех этих групп. Дополнительные сведения см. в разделе Резервное копирование и восстановление полнотекстового каталога SQL Server 2008.

Те полнотекстовые каталоги, которые были импортированы из SQL Server 2005, все еще являются файлами базы данных в собственных файловых группах. Процесс резервного копирования SQL Server 2005 для полнотекстовых каталогов применим за исключением того, что служба MSFTESQL не существует в SQL Server 2008. Дополнительные сведения о процессе SQL Server 2005 см. в разделе «Резервное копирование и восстановление полнотекстовых каталогов» электронной документации по SQL Server 2005.

ПримечаниеПримечание

Дополнительные сведения по резервному копированию и восстановлению баз данных SQL Server 2008 см. в разделе Резервное копирование и восстановление полнотекстового каталога SQL Server 2008.

Миграция полнотекстовых индексов при обновлении базы данных до версии SQL Server 2008

Файлы баз данных и полнотекстовые каталоги из предыдущей версии SQL Server могут быть обновлены до версии существующего экземпляра сервера SQL Server 2008 при помощи присоединения, восстановления или с использованием мастера копирования баз данных. Полнотекстовые индексы SQL Server 2005 (если такие присутствуют) импортируются, сбрасываются или перестраиваются. Полнотекстовые индексы SQL Server 2000 (если такие присутствуют) перестраиваются или сбрасываются. Свойство сервера upgrade_option управляет тем, какой из режимов обновления полнотекстового поиска будет использован экземпляром сервера во время обновления базы данных.

После присоединения, восстановления или копирования базы данных SQL Server 2005 или SQL Server 2000 на SQL Server 2008 эта база данных сразу становится доступной, после чего автоматически обновляется. В зависимости от объема индексируемых данных процесс импорта может занять несколько часов, а перестроение — в несколько раз больше (до десяти). Обратите внимание, что если при обновлении выбран режим «Импортировать», а полнотекстовый каталог недоступен, то связанные с ним полнотекстовые индексы будут перестроены.

Изменение поведения полнотекстового обновления на экземпляре сервера

Замечания по восстановлению полнотекстового каталога SQL Server 2005 в SQL Server 2008

Одним из методов обновления полнотекстовых данных базы данных SQL Server 2005 до версии SQL Server 2008 является восстановление полной резервной копии базы данных до версии SQL Server 2008.

При импорте каталога можно выполнить резервное копирование и восстановление базы данных и файла каталога. Это происходит так же, как в выпуске SQL Server 2005.

  • В полную резервную копию базы данных будет включен полнотекстовый каталог. Для ссылки на полнотекстовый каталог следует использовать его имя файла в SQL Server 2005, sysft_+catalog-name.

  • Если полнотекстовый каталог находится в автономном режиме, то резервное копирование завершится ошибкой.

Дополнительные сведения по резервному копированию и восстановлению полнотекстовых каталогов SQL Server 2005 см. в разделах Резервное копирование и восстановление полнотекстовых каталогов и Резервное копирование и восстановление файлов и полнотекстовые каталоги в электронной документации по SQL Server 2005.

При восстановлении базы данных в SQL Server 2008 для полнотекстового каталога будет создан новый файл базы данных. По умолчанию данный файл имеет имя ftrow_catalog-name.ndf. Например, если каталог имеет имя cat1, то именем по умолчанию файла базы данных SQL Server 2008 будет ftrow_cat1.ndf. Однако если имя по умолчанию уже используется в целевом каталоге, то новый файл базы данных будет назван ftrow_catalog-name{GUID}.ndf (где GUID представляет собой глобальный уникальный идентификатор нового файла).

После того как каталоги были импортированы, производится обновление представлений каталога sys.database_files и sys.master_files. Из них удаляются записи каталогов; для столбца path в представлении каталога sys.fulltext_catalogs устанавливается значение NULL.

Создание резервной копии базы данных

Восстановление резервной копии базы данных

ПримечаниеПримечание

Дополнительные сведения о восстановлении полнотекстовых индексов SQL Server 2008 см. в разделе Поэтапное восстановление и полнотекстовые индексы.

Примеры

В следующих примерах в инструкции RESTORE используется предложение MOVE для восстановления базы данных SQL Server 2005 с именем ftdb1. Файлы базы данных SQL Server 2005, журнала и каталогов перемещаются в новые места в экземпляре сервера SQL Server 2008 следующим образом.

  • Файл базы данных ftdb1.mdf перемещается по адресу C:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL10.MSSQLSERVER\MSSQL\DATA\ftdb1.mdf.

  • Файл журнала ftdb1_log.ldf перемещается в каталог журнала на диске журнала диск_журнала:\каталог_журнала\ftdb1_log.ldf.

  • Файлы каталогов, соответствующие каталогу sysft_cat90, перемещаются по адресу C:\temp. После того как был выполнен импорт полнотекстовых каталогов, они будут автоматически размещены в файле базы данных «C:\ftrow_sysft_cat90.ndf», а каталог «C:\temp» будет удален.

RESTORE DATABASE [ftdb1] FROM  DISK = N'C:\temp\ftdb1.bak' WITH  FILE = 1,
   MOVE N'ftdb1' TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\ftdb1.mdf',
    MOVE N'ftdb1_log' TO N'log_drive:\log_directory\ftdb1_log.ldf',
    MOVE N'sysft_cat90' TO N'C:\temp';

Присоединение базы данных SQL Server 2005 к SQL Server 2008

В SQL Server 2008 полнотекстовый каталог представляет собой логическое понятие, обозначающее группу полнотекстовых индексов. Полнотекстовый каталог является виртуальным объектом и не входит в какую-либо файловую группу. Однако если база данных SQL Server 2005, содержащая файлы полнотекстовых каталогов, присоединяется к экземпляру сервера SQL Server 2008, то присоединение файлов каталогов осуществляется исходя из их предыдущего расположения (как и в случае с другими файлами баз данных), так же как в SQL Server 2005.

Состояние каждого присоединенного полнотекстового каталога в SQL Server 2008 будет идентично его состоянию во время отсоединения базы данных от SQL Server 2005. Если заполнение полнотекстового индекса было приостановлено операцией отсоединения, то оно будет продолжено в SQL Server 2008, а сам полнотекстовый индекс станет доступным для полнотекстового поиска.

Если SQL Server 2008 не удается найти файл полнотекстового каталога или если полнотекстовый файл был перемещен во время операции присоединения без указания нового расположения, то поведение будет зависеть от выбранного режима полнотекстового обновления. Если был выбран режим полнотекстового обновления Импорт или Перестроение, то присоединенный полнотекстовый каталог будет перестроен. Если был выбран режим полнотекстового обновления Сброс, то присоединенный полнотекстовый каталог будет сброшен.

Дополнительные сведения о присоединении и отсоединении баз данных см. в разделах Присоединение и отсоединение баз данных, CREATE DATABASE (Transact-SQL), sp_attach_db и sp_detach_db (Transact-SQL).