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


Обновление полнотекстового поиска из SQL Server 2005

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

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

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

  • Параметры полнотекстового обновления

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

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

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

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

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

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

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

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

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

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

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

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

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

Параметры обновления полнотекстовых функций

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

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

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

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

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

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

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

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

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

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

  • Требуется ли согласованность в результатах запроса?

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

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

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

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

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

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

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

Обеспечение согласованности результатов запроса после импорта полнотекстового индекса SQL Server 2005

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

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

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

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

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

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

После обновления с версии SQL Server 2005:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пример

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

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

  • Файл журнала ftdb1_log.ldf перемещается в каталог журнала на диске журнала log_drive:\log_directory\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\MSSQL11.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 2012

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

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

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

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

См. также

Основные понятия

Приступая к работе с компонентом Full-Text Search

Настройка и управление средством разбиения на слова и парадигматические модули для поиска

Настройка и управление фильтрами для поиска