Comment faire pour déplacer, copier et sauvegarder les dossiers et fichiers de catalogue de texte intégral

Traductions disponibles Traductions disponibles
Numéro d'article: 240867 - Voir les produits auxquels s'applique cet article
Ancien nº de publication de cet article : F240867
Important Cet article contient des informations sur la modification du Registre. Avant de modifier le Registre, pensez à le sauvegarder et assurez-vous que vous savez le restaurer en cas de problème. Pour plus d'informations sur la sauvegarde, la restauration et la modification du Registre, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
256986 Description du Registre de Microsoft Windows
Agrandir tout | Réduire tout

Sommaire

Résumé

Les catalogues de texte intégral et les index ne sont pas stockés dans une base de données SQL Server. Ils sont stockés dans des fichiers séparés gérés par le service Recherche Microsoft. Les fichiers de catalogue de texte intégral ne sont pas récupérés lors d'une récupération Microsoft SQL Server. En outre, vous ne pouvez pas utiliser d'instructions Transact SQL BACKUP et RESTORE pour sauvegarder et restaurer des fichiers de catalogue de texte intégral. Après les opérations de récupération ou de restauration, vous devez resynchroniser les catalogues de texte intégral séparément. Seul l'administrateur système Microsoft Windows NT et le service Recherche Microsoft peuvent accéder aux fichiers de catalogue de texte intégral.

Bien que vous ne puissiez pas utiliser de bases de données SQL Server pour sauvegarder des catalogues de texte intégral, vous pouvez utiliser des bases de données de production avec de grandes tables qui permettent la recherche de texte intégral. Si tel est le cas, vous devrez peut-être déplacer, sauvegarder ou restaurer ces catalogues de texte intégral et leurs bases de données de production. Le délai d'exécution du remplissage d'un catalogue de texte intégral ou de resynchronisation peut être supérieur à celui d'une maintenance classique. Cet article décrit une méthode différente que vous pouvez utiliser pour déplacer ou copier les catalogues sans lancer de remplissage complet. Cette méthode évite des temps d'arrêt importants.

Cet article présente plusieurs méthodes que vous pouvez utiliser pour copier, déplacer et sauvegarder ou restaurer des dossiers et fichiers de catalogue de texte intégral, à certaines conditions :
  • Les versions de SQL Server que vous utilisez sont les mêmes.
  • Les dossiers et fichiers de catalogue de texte intégral doivent se trouver sur un lecteur local.
  • Les dossiers et fichiers de catalogue de texte intégral doivent conserver leurs noms et le contenu de dossier d'origine.
  • L'identificateur de base de données et l'identificateur de table de texte intégral doivent être identiques sur les deux serveurs lorsque vous déplacez ou copiez des catalogues de texte intégral d'un serveur à un autre.
Avertissement Ces procédures ne sont pas prises en charge sur les instances de cluster avec basculement SQL Server.

Les catalogues de texte intégral sont gérés en tant que collection de dossiers et de fichiers. Les emplacements par défaut des catalogues de texte intégral sont les suivants :

Microsoft SQL Server 7.0 :
\Mssql7\FTDATA

Microsoft SQL Server 2000 :
Instance par défaut : Program Files\Microsoft SQL Server\MSSQL\FTDATA
Instance nommée : Program Files\Microsoft SQL Server\MSSQL$instancename\FTDATA

Chaque catalogue de texte intégral et ses fichiers associés sont conservés dans un dossier qui utilise la convention d'affectation de noms suivante : dbid est l'identificateur de la base de données associée, et ftcatid est l'identificateur de catalogue de texte intégral :

« SQLxxxxx(dbid)yyyyy(ftcatid) »

Chaque ftcatid est unique dans la base de données associée.

Avertissement Toute utilisation incorrecte de l'Éditeur du Registre peut générer des problèmes sérieux, pouvant vous obliger à réinstaller votre système d'exploitation. Microsoft ne peut garantir que les problèmes résultant d'une mauvaise utilisation de l'Éditeur du Registre puissent être résolus. Vous assumez l'ensemble des risques liés à l'utilisation de cet outil.

Pour sauvegarder un catalogue de texte intégral sur un ordinateur autonome ou un cluster

  1. Arrêtez le service Recherche Microsoft sur un ordinateur autonome. Dans le cas d'une configuration SQL Server en clusters, laissez la ressource de texte intégral en ligne. Après avoir arrêté le service Recherche Microsoft, vous ne pouvez pas exécuter de requêtes de texte intégral qui utilisent les prédicats CONTAINS ou FREETEXT ou les fonctions CONTAINSTABLE ou FREETEXTTABLE par rapport à la base de données. En outre, les requêtes de recherche de texte intégral ne fonctionnent pas, et le message d'erreur suivant s'affiche :
    Serveur : Msg 7602, Niveau 16, Etat 1, Ligne 2 Le service de texte intégral (Microsoft Search) n'est pas disponible. L'administrateur du système doit démarrer ce service.
  2. Utilisez un utilitaire de sauvegarde de système de fichiers Microsoft Windows NT, tel que Backup Exec, puis sauvegardez les catalogues, dossiers et fichiers de texte intégral. La table système des catalogues de texte intégral (sysfulltextcatalogs) est sauvegardée avec la base de données SQL Server.
  3. Sauvegardez les entrées du Registre suivantes si vous devez sauvegarder les catalogues individuellement :
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Applications\SQLServer\Catalogs\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer\[FT_Catalog_Folder]
    [FT_Catalog_Folder] est le nom du dossier de catalogue « SQLxxxxx(dbid)yyyyy(ftcatid) »
    Pour une instance nommée de SQL Server, l'entrée du Registre est \SQLServer $nom_instance\.
  4. 2. Sauvegardez les entrées du Registre suivantes pour sauvegarder tous les catalogues : (Cela sauvegarde tous les catalogues de texte intégral sur le serveur.)
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Applications\SQLServer\Catalogs \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer
    Pour une instance nommée de SQL Server, l'entrée du Registre est \SQLServer $nom_instance\.

Pour restaurer des catalogues de texte intégral du même serveur sur le même lecteur ou chemin d'accès local

  1. Arrêtez le service Recherche Microsoft. Remarque Effectuez l'étape 2 uniquement si la base de données a été supprimée. Sinon, passez à l'étape 3.
  2. Restaurez ou connectez la base de données dans laquelle vous avez activé le texte intégral. Après avoir restauré la base de données, assurez-vous que l'ID de base de données (dbid) est identique à ce qu'il était lorsque vous l'avez sauvegardé.
    Remarque Si la base de données a été connectée à l'aide de la commande sp_attach_db, assurez-vous que vous exécutez la commande 'enable' exec sp_fulltext_database pour activer la base de données pour le texte intégral.
  3. Pour déterminer le dbid, exécutez le code suivant :
    Use dbname
    go
    select db_id()
    Remarque Pour restaurer des catalogues individuels, suivez l'étape 4. Pour restaurer tous les catalogues, allez à l'étape  5.
  4. Restaurez les entrées du Registre que vous avez sauvegardées selon les instructions ci-dessus. Vous souhaiterez peut-être sauvegarder le Registre avant de démarrer ce processus.
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Applications\SQLServer\Catalogs\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer\[FT_Catalog_Folder]
    [FT_Catalog_Folder] est le nom du dossier de catalogue « SQLxxxxx(dbid)yyyyy(ftcatid) »
    Pour une instance nommée de SQL Server, l'entrée du Registre est \SQLServer $nom_instance\.
  5. Pour restaurer tous les catalogues sur le serveur, restaurez les entrées suivantes du Registre. Vous souhaiterez peut-être sauvegarder le Registre avant de démarrer ce processus.
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Applications\SQLServer\Catalogs \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer
    Pour une instance nommée de SQL Server, l'entrée du Registre est \SQLServer $nom_instance\.
  6. Restaurez les catalogues à partir de la sauvegarde à l'emplacement par défaut à partir duquel vous les avez sauvegardés.
  7. Redémarrez le service Recherche Microsoft.
  8. Confirmez que les nouveaux dossiers et fichiers de catalogues de texte intégral sont fonctionnels en utilisant une instruction Transact-SQL SELECT et faites appel à un prédicat CONTAINS ou FREETEXT dans la clause WHERE.

Pour déplacer ou copier des catalogues de texte intégral entre lecteurs locaux ou chemins d'accès sur le même ordinateur exécutant SQL Server

  1. Confirmez le nom du catalogue de texte intégral et le lecteur local ou le chemin d'accès à l'aide de sp_help_fulltext_catalogs 'FT_nom_catalogue'. Enregistrez la lettre de lecteur de catalogue de texte intégral et le chemin d'accès complet pour les utiliser ultérieurement.
  2. Arrêtez le service Recherche Microsoft. Exécutez l'étape 3 et 4 uniquement si la base de données ou si le catalogue a été supprimé(e), sinon, passez à l'étape 5.
  3. Restaurez ou connectez la base de données dans laquelle vous avez activé le texte intégral. Après avoir restauré la base de données, assurez-vous que l'ID de base de données (dbid) est identique à ce qu'il était lorsque vous l'avez sauvegardé.

    Remarque Si la base de données a été connectée à l'aide de la commande sp_attach_db, assurez-vous que vous exécutez la commande 'enable' exec sp_fulltext_database pour activer la base de données pour le texte intégral.

    Pour déterminer le dbid, exécutez le code suivant :
    Use dbname
    go
    select db_id()
  4. Restaurez les entrées suivantes du Registre. Vous souhaiterez peut-être sauvegarder le Registre avant de démarrer ce processus.
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Applications\SQLServer\Catalogs\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer\[FT_Catalog_Folder]
    [FT_Catalog_Folder] est le nom du dossier de catalogue « SQLxxxxx(dbid)yyyyy(ftcatid) »
    Pour une instance nommée de SQL Server, l'entrée du Registre est \SQLServer $nom_instance\.
  5. Déterminez le nouveau lecteur local ou chemin d'accès du catalogue de texte intégral. Copiez les catalogues de texte intégral vers le nouvel emplacement.
  6. Autorisez les mises à jour de la table système grâce à la procédure stockée système sp_configure et à RECONFIGURE avec remplacement, puis mettez à jour la colonne de chemin d'accès [nom_base_données].dbo.sysfulltextcatalogs avec le nouveau lecteur local ou chemin d'accès de destination pour le dossier par défaut de catalogue de texte intégral, tel que d:\FTData.
  7. Utilisez l'utilitaire de Kit de ressources Windows NT 4.0 regfind pour rechercher et remplacer les valeurs de clé de Registre HKLM suivantes pour chaque dossier de catalogue de texte intégral (FT_Catalog_Folder) (par exemple, SQL0000500005) :
    \SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer\[FT_Catalog_Folder] \SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects\[FT_Catalog_Folder] \SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer\[FT_Catalog_Folder]
    En outre, assurez-vous d'utiliser des guillemets droits ("") pour joindre les clés de Registre pour les paramètres -p et -r. Par exemple :
    -m \\server_2 -p "<Key Name>" <Old_FT_Catalog_Path_and_Folder> -r <New_FT_Catalog_Path_and_Folder>

    Remarque : Remplacez <Key Name>, <Old_FT_Catalog_Path_and_Folder> et <New_FT_Catalog_Path_and_Folder> par les valeurs correspondantes.
    Par exemple : -m \\server_2 -p "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\sqlserver$SQL2k\SQL0000500005" d:\programme\Microsoft SQL Server\MSSQL$SQL2K\FTDATA\SQL0000500005 -r d:\programme\Microsoft SQL Server\MSSQL$SQL2K\FTDATA\New Location\SQL0000500005

    Pour plus d'informations sur la syntaxe permettant d'utiliser l'utilitaire regfind, tapez le paramètre suivant à partir d'une invite de commandes DOS : regfind /?
  8. Redémarrez le service Recherche Microsoft.
  9. Confirmez que les nouveaux dossiers et fichiers de catalogues de texte intégral sont fonctionnels en utilisant une instruction Transact-SQL SELECT et faites appel à un prédicat CONTAINS ou FREETEXT dans la clause WHERE.

Pour copier des catalogues de texte intégral entre instances de SQL Server vers le même lecteur local ou chemin d'accès

La procédure suivante sert à déplacer ou copier un dossier et des fichiers de catalogue de texte intégral d'un ordinateur exécutant SQL Server (serveur_1) vers un autre ordinateur exécutant SQL Server (serveur_2). Cet article suppose que la recherche de texte intégral SQL Server est installée et que les mêmes identificateurs de base de données et identificateurs de table existent sur les deux serveurs. Pour réussir la copie des catalogues de texte intégral d'une instance de SQL Server vers une autre, les ID de base de données doivent être identiques. Par conséquent, il est préférable que le serveur_2 (sur lequel vous copiez le catalogue) soit une réplique exacte (clone) du serveur_1. Confirmez que les dbid du serveur_1 et du serveur_2 sont les mêmes. Pour ce faire, exécutez la commande suivante pour chaque serveur :
Use dbname
go
select db_id()
Pour « échanger » les dbid en vue d'obtenir le dbid correct sur serveur_2, faites appel à sp_detach_db et sp_attach_db pour déconnecter et reconnecter les bases de données appropriées. Par exemple, si vous avez deux bases de données, par exemple TestDB (dbid = 7) et PerfDB (dbid = 8), déconnectez-les toutes les deux, puis reconnectez d'abord la base de données PerfDB, puis la base de données TestDB. Cela permute les dbid : Le dbid de TestDB devient 8 et le dbid de PerfDB devient 7. Le dbid le plus bas du pool de dbid disponible est toujours utilisé en premier.

Avertissement Pour faire ceci, avant de déconnecter les bases de données, assurez-vous que les deux bases de données n'ont pas de catalogues de texte intégral et qu'elles ne sont pas activées pour le texte intégral. Consultez le paragraphe intitulé « Procédures de nettoyage » dans la section « Plus d'informations » pour connaître la procédure de suppression de catalogues de texte intégral et pour désactiver le texte intégral pour une base de données.
  1. Confirmez que les valeurs de dbid master.dbo.sysdatabases pour les bases de données activées pour le texte intégral sont les mêmes sur les deux serveurs.
  2. Confirmez que les valeurs d'ID (nom_base_données].dbo.sysobjects pour les tables activées pour le texte intégral sont les mêmes sur les deux serveurs. Pour plus d'informations sur la façon d'obtenir un ID de table, reportez-vous à la rubrique « object_id » dans la documentation relative à SQL Server.
  3. Confirmez que le nom de catalogue de texte intégral et le lecteur local ou le chemin d'accès sont identiques sur les deux serveurs à l'aide de sp_help_fulltext_catalogs 'Nom_catalogue_FT'.
  4. Arrêtez le service Recherche Microsoft sur le serveur_1 et le serveur_2.
  5. Mappez une lettre de lecteur sur le serveur_1 au lecteur ou chemin d'accès correspondant sur serveur_2.
  6. Copiez le dossier et les fichiers de catalogue de texte intégral que vous avez identifiés à l'étape 3 de serveur_1 vers serveur_2 à l'aide de la commande DOS xcopy. Utilisez le lecteur de catalogue de texte intégral qualifié complet ou le chemin d'accès et nom du dossier comme emplacement source et le lecteur de catalogue de texte intégral mappé ou le chemin d'accès et le nom du dossier comme emplacement de destination. Si les dossiers de destination n'existent pas sur le serveur_2, utilisez les commutateurs xcopy/I et /E pour créer tous les dossiers de destination. Pour restaurer tous les catalogues, copiez tous les dossiers de catalogue vers le serveur_2.
  7. Vous pouvez utiliser la commande DOS RMDIR /S /Q [FT_Catalog_drive/path] sur le serveur_1 pour supprimer les fichiers de catalogue de texte intégral sur le serveur_1.

    Remarque Pour restaurer des catalogues individuels, suivez l'étape 8. Pour restaurer tous les catalogues, allez à l'étape  9.
  8. Restaurez les entrées du Registre que vous avez sauvegardées selon les premières instructions. Vous souhaiterez peut-être sauvegarder le Registre avant de démarrer ce processus.
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Applications\SQLServer\Catalogs\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer [FT_Catalog_Folder]
    [FT_Catalog_Folder] est le nom du dossier de catalogue « SQLxxxxx(dbid)yyyyy(ftcatid) »
    Pour une instance nommée de SQL Server, l'entrée du Registre est \SQLServer $nom_instance\.
  9. Pour restaurer tous les catalogues sur le serveur, restaurez les entrées suivantes du Registre. Dans ce cas néanmoins, vous perdez tous les catalogues existants sur le serveur_2 une fois cette étape exécutée. Vous souhaiterez peut-être sauvegarder le Registre avant de démarrer ce processus.
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Applications\SQLServer\Catalogs \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer
    Remarque Par défaut, les binaires de texte intégral se trouvent aux emplacements suivants :
    SQL Server 7.0 : \Mssql7\FTDATA
    Microsoft. Instance par défaut de SQL Server 2000 : \Program Files\Microsoft SQL Server\MSSQL\FTDATA
    Instance nommée de SQL Server 2000 : MSSQL$nom_instance\FTDATA
    Ces emplacements et chemins d'accès aux dossiers peuvent varier sur d'autres ordinateurs. Dans ce cas, vous devez modifier deux entrées du Registre afin que les chemins d'accès pointent sur l'emplacement correct des binaires de texte intégral après avoir terminé la restauration sur le serveur_2.
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer
    Vous pouvez faire appel à l'utilitaire regfind pour localiser des entrées du Registre et modifier l'emplacement des binaires de texte intégral.
  10. Redémarrez le service Recherche Microsoft sur les deux serveurs.
  11. Confirmez que les nouveaux dossiers et fichiers de catalogues de texte intégral sont fonctionnels en utilisant une instruction Transact-SQL SELECT et faites appel à un prédicat CONTAINS ou FREETEXT dans la clause WHERE.

Plus d'informations

Le script SQL Server suivant montre comment déplacer ou « migrer » un dossier de catalogue de texte intégral de SQL Server 7.0 (serveur_1) vers un autre ordinateur exécutant SQL Server 7.0 à (serveur_2) sur un lecteur local différent ou un emplacement de chemin d'accès sur serveur_2. Cet article suppose que SQL Server 7.0 avec la recherche de texte intégral est installé sur un ordinateur Windows NT 4.0, et que la même base de données et les mêmes identificateurs de table existent sur les deux serveurs.

Pour les besoins de cette illustration, la base de données Pubs (dbid = 5) et la table pub_info (id = 645577338) sont activées pour le texte intégral et renseignées sur les deux serveurs. Remplacez serveur_2 par votre nom de serveur et remplacez le nom du dossier de catalogue de texte intégral et le lecteur ou le chemin d'accès par votre nom de dossier de catalogue de texte intégral et votre lecteur ou chemin d'accès.

Vous devez ouvrir une session en tant que membre du groupe des administrateurs locaux du serveur et être membre du rôle de serveur sysadmin de SQL Server (ou vous connecter en tant que « sa »). En outre, vous devez être le propriétaire de la base de données (DBO) pour pouvoir exécuter les scripts SQL Server suivants.

Exécutez le script SQL Server suivant sur les deux serveurs :
use pubs
go
sp_fulltext_service 'clean_up'
go
sp_fulltext_database 'enable'
go

-- Creates and activates the full-text catalog: PubInfo, if it does not exist.
-- Drops, re-creates and activates the full-text catalog: PubInfo, if it does
-- exist.
IF OBJECTPROPERTY ( object_id('pub_info'),
                    'TableHasActiveFulltextIndex') = 1
BEGIN
    print 'Table pub_info is Full-Text Enabled, dropping Full-Text Index
& Catalog...'
    EXEC sp_fulltext_table 'pub_info', 'drop'
    EXEC sp_fulltext_catalog 'PubInfo', 'drop'
    print 'Table pub_info is NOT Full-Text Enabled, creating FT Catalog,
Index & Activating...'
    EXEC sp_fulltext_catalog 'PubInfo', 'create'
    EXEC sp_fulltext_table 'pub_info', 'create', 'PubInfo', 'UPKCL_pubinfo'
    EXEC sp_fulltext_column 'pub_info', 'pub_id', 'add'
    EXEC sp_fulltext_column 'pub_info', 'pr_info', 'add'
    EXEC sp_fulltext_table 'pub_info', 'activate'
END
ELSE IF OBJECTPROPERTY ( object_id('pub_info'),'TableHasActiveFulltextIndex') = 0
BEGIN
    print 'Table pub_info is NOT Full-Text Enabled, creating FT Catalog,
Index & Activating...'
    EXEC sp_fulltext_catalog 'PubInfo', 'create'
    EXEC sp_fulltext_table 'pub_info', 'create', 'PubInfo', 'UPKCL_pubinfo'
    EXEC sp_fulltext_column 'pub_info', 'pub_id', 'add'
    EXEC sp_fulltext_column 'pub_info', 'pr_info', 'add'
    EXEC sp_fulltext_table 'pub_info', 'activate'
END
go -- Confirm Database ID, Object ID, FT Catalog ID and FT folder(default)
   -- location.
select dbid, name from master.dbo.sysdatabases where dbid = DB_ID('pubs')
-- dbid = 5
go
select id, name from pubs.dbo.sysobjects where id = object_id('pub_info') 
go
sp_help_fulltext_catalogs 'PubInfo' 
go
sp_help_fulltext_tables 'PubInfo', 'pub_info' 
go
sp_help_fulltext_columns 'pub_info' 
go
exec master..xp_cmdshell 'dir d:\MSSQL70\FTDATA'
go

--- After full-text is enabled and activated, start full crawl/population
BEGIN
SET NOCOUNT ON
EXEC sp_fulltext_catalog 'PubInfo', 'start_full'
--
--  Wait for crawl to complete
--  NOTE: Forlarger tables, increase the WAITFOR DELAY time appropriately
--
DECLARE @status int, @itemCount int, @keyCount int, @indexSize int
SELECT @status = FullTextCatalogProperty('PubInfo', 'populatestatus')
WHILE (@status <> 0)
BEGIN
  WAITFOR DELAY '00:00:01' -- wait for 1 second before checking FT
                           -- Populatestatus...
  SELECT @status = FullTextCatalogProperty('PubInfo', 'populatestatus')
END
WAITFOR DELAY '00:00:05' -- wait for 5 seconds to receive correct FT Property
                         -- info (add more time for larger tables)...
SET @itemCount = FullTextCatalogProperty('PubInfo', 'itemcount')
SET @keyCount = FullTextCatalogProperty('PubInfo', 'uniquekeycount')
SET @indexSize = FullTextCatalogProperty('PubInfo', 'indexsize')
PRINT 'Nbr. of Rows FT Indexed = ' + CAST((CONVERT(varchar(10), @itemCount)
- 1) as varchar(12)) + char(09) + 'Nbr. of Unique FT Words = '
+  CONVERT(varchar(10), @keyCount) + char(09)
SET NOCOUNT OFF
END
go

-- Confirm FT population, 1 row should be returned (pub_id = 0736). 
SELECT pub_id, pr_info FROM pub_info WHERE CONTAINS(pr_info, 'moon')
go

-- Stop the Microsoft Search service on both servers
exec master..xp_cmdshell 'net stop "Microsoft Search"'
go
Exécutez le script SQL Server suivant sur le serveur SOURCE (serveur_1) :
use pubs
go
-- Map a Drive letter to the destination server.
exec master..xp_cmdshell 'NET USE K: \\server_2\[drive]$'
go
-- Copy the destination server's FT catalog folder and files as a backup.
exec master..xp_cmdshell 'ROBOCOPY K:\MSSQL70\FTDATA\SQL0000500005
K:\MSSQL70\BACKUP\SQL0000500005 /E /NP'
go
-- Remove the destination server's full-text catalog folder and files.
exec master..xp_cmdshell 'RMDIR /S /Q K:\MSSQL70\FTDATA\SQL0000500005'
go
-- Copy the SOURCE full-text catalog folder and files to the destination server's
NEW full-text catalog location.
exec master..xp_cmdshell 'ROBOCOPY D:\MSSQL70\FTDATA\SQL0000500005
K:\FTData\SQL0000500005 /E /NP'
go
-- Restart the Microsoft Search service.
exec master..xp_cmdshell 'net start "Microsoft Search"'
go
-- Remove the mapped drive letter to the destination server, for example
-- K:\.
exec master..xp_cmdshell 'NET USE K: /delete'
go
Vous devez exécuter le script SQL suivant sur le serveur de destination (serveur_2) :
use master
go
-- Enable system table updates.
sp_configure allow,1
go
reconfigure with override
go

use pubs
go
-- Record full-text catalog information (Note: path = NULL)
select * from sysfulltextcatalogs
go
-- Update the full-text catalog information with the new full-text catalog location
UPDATE sysfulltextcatalogs set path = 'E:\FTData'
   WHERE ftcatid = 5
go
-- Record full-text catalog info. (Note: path = E:\FTData)
select * from sysfulltextcatalogs
go

use master
go
-- Disable system table updates.
sp_configure allow,0
go
reconfigure with override
go

-- CAUTION: Back up your registry hive before you contine!

-- Search and replace HKLM "Gather" registry keys with new full-text catalog
-- folder location [10 row(s) affected]:
exec master..xp_cmdshell 'REGFIND -m \\server_2 -p
\Registry\Machine\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer\SQL0000500005
"E:\MSSQL70\FTDATA\SQL0000500005" -r "E:\FTData\SQL0000500005"'
go
-- Search and replace HKLM "Gatherer Manager" registry keys with new FT
-- catalog folder location [6 row(s) affected]:
exec master..xp_cmdshell 'REGFIND -m \\server_2 -p
"\Registry\Machine\SOFTWARE\Microsoft\Search\1.0\Gathering
Manager\Applications\SQLServer\Projects\SQL0000500005"
"E:\MSSQL70\FTDATA\SQL0000500005" -r "E:\FTData\SQL0000500005"'
go
-- Search and replace HKLM indexer registry keys with new FT catalog folder
-- location [6 row(s) affected]:
exec master..xp_cmdshell 'REGFIND -m \\server_2 -p
"\Registry\Machine\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer\SQL0000500005"
"E:\MSSQL70\FTDATA\SQL0000500005" -r "E:\FTData\SQL0000500005"'
go

-- Restart the Microsoft Search service
exec master..xp_cmdshell 'net start "Microsoft Search"'
go

-- Confirm FT population, 1 row should be returned (pub_id = 0736). 
use pubs
go
SELECT pub_id, pr_info FROM pub_info WHERE CONTAINS(pr_info, 'moon')
go
Vous pouvez « arrêter » un remplissage de texte intégral en cours en exécutant le code SQL Server suivant :

Attention Si le nombre d'éléments est différent du nombre de lignes indexées en texte intégral plus une, la taille du catalogue de texte intégral est peut-être inexacte !
-- Run the following code after starting full crawl/population through another connection.
use pubs
go
BEGIN
SET NOCOUNT ON
EXEC sp_fulltext_catalog 'PubInfo', 'stop'

-- Wait for crawl to stop

--  NOTE: For larger tables, increase the WAITFOR DELAY time appropriately

DECLARE @status int, @itemCount int, @keyCount int, @indexSize int
SELECT @status = FullTextCatalogProperty('PubInfo', 'populatestatus')
WHILE (@status <> 0)
BEGIN
  WAITFOR DELAY '00:00:01' -- wait for 1 second before checking FT
                           -- Populatestatus...
  SELECT @status = FullTextCatalogProperty('PubInfo', 'populatestatus')
END
WAITFOR DELAY '00:00:05' -- wait for 5 seconds to receive correct FT Property
                         -- info (add more time for larger tables)...
SET @itemCount = FullTextCatalogProperty('PubInfo', 'itemcount')
SET @keyCount = FullTextCatalogProperty('PubInfo', 'uniquekeycount')
SET @indexSize = FullTextCatalogProperty('PubInfo', 'indexsize')
PRINT 'Nbr. of Rows FT Indexed = ' + CAST((CONVERT(varchar(10), @itemCount) - 1)
as varchar(12)) + char(09) + 'Nbr. of Unique FT Words = ' +
CONVERT(varchar(10), @keyCount) + char(09)
SET NOCOUNT OFF
END
go
-- Can return: Nbr. of Rows FT Indexed = -1 Nbr. of Unique FT Words = 0 
-- (depending upon when the crawl/population stopped)
Procédures de nettoyage

Exécutez le script SQL suivant sur les deux serveurs :

Supprimez l'index de texte intégral, le catalogue de texte intégral, puis désactivez la recherche de texte intégral dans la base de données pubs :
use pubs
go
sp_fulltext_table 'pub_info', 'drop'
go
sp_fulltext_catalog 'PubInfo', 'drop'
go
sp_fulltext_database 'disable'
go
sp_fulltext_service 'clean_up'
go
-- end SQL Script !

RÉFÉRENCES

Pour plus d'informations sur la façon d'obtenir le dbid pour une base de données, reportez-vous à la rubrique « DB_ID » dans la documentation en ligne de SQL Server.

Pour déterminer si une base de données est activée pour le texte, consultez les rubriques « DATABASEPROPERTY » ou « IsFulltextEnabled » dans la documentation en ligne de SQL Server.

Pour plus d'informations sur ftcatid, consultez les rubriques « sp_help_fulltext_catalogs », « OBJECTPROPERTY » ou « TableFulltextCatalogId » dans la documentation en ligne de SQL Server.

Propriétés

Numéro d'article: 240867 - Dernière mise à jour: mercredi 23 août 2006 - Version: 6.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft SQL Server 2000 Standard sur le système suivant
    • Microsoft SQL Server 2000 Édition Développeur
    • Microsoft SQL Server 2000 Standard
    • Microsoft SQL Server 2000 Édition Entreprise
  • Microsoft SQL Server 7.0 Édition Entreprise
  • Microsoft SQL Server 7.0 Standard
Mots-clés : 
kbinfo KB240867
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com