Como mover, copiar e fazer backup de arquivos e pastas do catálogo de texto completo

Traduções deste artigo Traduções deste artigo
ID do artigo: 240867 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Catálogos de texto completo e índices não são armazenados em um SQL Server banco de dados. Catálogos de texto completo e índices são armazenados em arquivos separados que gerencia o serviço de pesquisa da Microsoft. Os arquivos de catálogo de texto completo não são recuperados durante uma recuperação do Microsoft SQL Server. Além disso, você não pode usar as instruções Transact SQL BACKUP e restauração para backup e restaurar o texto completo catalogar arquivos. Depois de operações de restauração ou recuperação, você deve ressincronizar separadamente os catálogos de texto completo. Somente o Microsoft Windows NT administrador do sistema e o serviço de pesquisa da Microsoft podem acessar os arquivos de catálogo de texto completo.

Embora você não pode usar bancos de dados SQL Server para fazer backup de catálogos de texto completo, você pode usar pesquisa-habilitados bancos de dados com tabelas grandes que são de texto completo de produção. Se você fizer isso, você talvez precisará mover, fazer backup ou restaurar esses catálogos de texto completo e seus bancos de dados de produção. O tempo de execução para um catálogo de texto completo população ou a ressincronização pode ser maior do que a janela de manutenção típico. Este artigo descreve um método diferente que você pode usar para mover ou copiar os catálogos sem iniciar um preenchimento completo. Este método evita um tempo de inatividade significativo.

Este artigo documenta vários métodos que você pode usar para copiar, mover e fazer backup ou restaurar pastas do catálogo de texto completo e arquivos em determinadas restrições:
  • As versões do SQL Server que você está usando são os mesmos.
  • Arquivos e pastas do catálogo de texto completo devem estar em uma unidade local.
  • Arquivos e pastas do catálogo de texto completo devem manter seus nomes originais e conteúdo da pasta.
  • O identificador do banco de dados ativado texto completo e o identificador de índice devem ser o mesmo em ambos os servidores quando você move ou copia catálogos de texto completo entre servidores.
Aviso Esses procedimentos não são suportados em instâncias do SQL Server Cluster de Failover.

Catálogos de texto completo são mantidos como uma coleção de pastas e arquivos. Os locais padrão dos catálogos de texto completo são:

Microsoft SQL Server 7.0 :
\Mssql7\FTDATA

Microsoft SQL Server 2000 :
Instância padrão: Program Files\Microsoft SQL Server\MSSQL\FTDATA
Instância nomeada: Program Files\Microsoft SQL Server\MSSQL $ instancename\FTDATA

Cada catálogo de texto completo e seus arquivos associados são mantidos em uma pasta que usa a seguinte convenção de nomenclatura onde dbid é o identificador do banco de dados associado e onde ftcatid é o identificador de catálogo de texto completo:

"yyyyy SQLxxxxx (dbid) (ftcatid)"

Cada ftcatid é exclusivo no banco de dados associado.

importante Esta seção, método ou tarefa contém etapas que informam sobre como modificar o registro. No entanto, sérios problemas poderão ocorrer se você modificar o registro incorretamente. Por isso, certifique-se que você execute essas etapas cuidadosamente. Para proteção adicional, fazer backup do registro antes de modificá-lo. Em seguida, você pode restaurar o registro se ocorrer um problema. Para obter mais informações sobre como fazer backup e restaurar o registro, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
322756Como fazer backup e restaurar o registro no Windows

Fazer backup de um catálogo de texto completo em um computador autônomo ou em um cluster

  1. Pare o serviço de pesquisa da Microsoft em um computador autônomo. Para uma configuração em cluster do SQL Server, deixe o recurso de texto completo on-line. Depois que você pára o serviço de pesquisa da Microsoft, você não pode executar consultas de texto completo que utilizam predicados CONTAINS ou FREETEXT, ou as conjunto de linhas funções com valor CONTAINSTABLE ou FREETEXTTABLE no banco de dados. Além disso, consultas de pesquisa de texto completo não funcionarem e você receber a seguinte mensagem de erro:
    Servidor: Mensagem 7602, nível 16, estado 1, linha 2 O Full-Text serviço (Microsoft Search) não está disponível. O administrador do sistema deve iniciar esse serviço.
  2. Use um Microsoft Windows NT arquivo sistema utilitário de backup, como o Backup Exec, e em seguida, backup de catálogos de texto completo, pastas e files.The tabela de sistema para catálogos de texto completo ( sysfulltextcatalogs ) é feita com o banco de dados SQL Server.
  3. Fazer o backup as entradas do Registro a seguir se você deve fazer o backup os catálogos individualmente:
    \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] é o catálogo pasta nome "SQLxxxxx(dbid) yyyyy(ftcatid)"
    Para uma instância nomeada do SQL Server, a entrada do registro é \SQLServer$ InstanceName \.
  4. 2. Backup as seguintes entradas do Registro fazer backup de todos os catálogos: (este backup todos os catálogos de texto completo no servidor.)
    \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
    Para uma instância nomeada do SQL Server, a entrada do registro é \SQLServer$ InstanceName \.

Para restaurar os catálogos de texto completo no mesmo servidor para a mesma unidade local ou caminho

  1. Pare o serviço Microsoft Search. Observação Execute a etapa 2 somente se o banco de dados foi descartado. Caso contrário, vá para a etapa 3.
  2. Restaurar ou anexar o banco de dados onde você ativou o texto completo. Depois de restaurar o banco de dados, certifique-se a identificação de banco de dados (dbid) é o mesmo como ele era quando foi feito o backup.
    Observação Se o banco de dados foi anexado usando o comando sp_attach_db , certifique-se de que você execute sp_fulltext_database exec 'Ativar' comando para habilitar o banco de dados de texto completo.
  3. Para determinar o dbid, execute o código a seguir:
    Use dbname
    go
    select db_id()
    Observação para restaurar catálogos individuais, siga a etapa 4. Para restaurar todos os catálogos, vá para a etapa 5.
  4. Restaure as entradas do registro que você fez backup com base em instruções backup anteriormente. Você talvez deseje antes de fazer backup do registro antes de tentar esta etapa.
    \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] é o catálogo pasta nome "SQLxxxxx(dbid) yyyyy(ftcatid)"
    Para uma instância nomeada do SQL Server, a entrada do registro é \SQLServer$ InstanceName \.
  5. Para restaurar todos os catálogos no servidor, restaure as seguintes entradas do Registro. Você talvez deseje antes de fazer backup do registro antes de tentar esta etapa.
    \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
    Para uma instância nomeada do SQL Server, a entrada do registro é \SQLServer$ InstanceName \.
  6. Restaure os catálogos partir do backup para o local padrão que foi feito o backup de.
  7. Reinicie o serviço Microsoft Search.
  8. Confirme se o texto completo novo catálogos pastas e arquivos são funcionais usando uma instrução Transact-SQL e usar um predicado CONTAINS ou FREETEXT na cláusula WHERE.

Para mover ou copiar catálogos de texto completo entre unidades locais ou caminhos no mesmo computador que está executando o SQL Server

  1. Confirme o nome do catálogo de texto completo e a unidade local ou o caminho usando sp_help_fulltext_catalogs 'FT_Catalog_Name'. Registre a letra da unidade catálogo de texto completo e o caminho totalmente qualificado para usar posteriormente.
  2. Pare o serviço Microsoft Search. Executar a etapa 3 e 4 somente se o banco de dados foi ignorado ou se o catálogo foi excluído, caso contrário, vá para a etapa 5.
  3. Restaurar ou anexar o banco de dados onde você ativou o texto completo. Depois de restaurar o banco de dados, certifique-se a identificação de banco de dados (dbid) é o mesmo como ele era quando foi feito o backup.

    Observação Se o banco de dados foi anexado usando o comando sp_attach_db , certifique-se de que você execute sp_fulltext_database exec 'Ativar' comando para habilitar o banco de dados de texto completo.

    Para determinar o dbid, execute o código a seguir:
    Use dbname
    go
    select db_id()
  4. Restaure as entradas do Registro a seguir. Você talvez deseje antes de fazer backup do registro antes de tentar esta etapa.
    \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] é o catálogo pasta nome "SQLxxxxx(dbid) yyyyy(ftcatid)"
    Para uma instância nomeada do SQL Server, a entrada do registro é \SQLServer$ InstanceName \.
  5. Determine o caminho ou unidade local do novo catálogo de texto completo. Copie os catálogos de texto completo para o novo local.
  6. Permitir atualizações de tabela de sistema usando o sistema armazenado procedimento sp_configure e RECONFIGURE com substituir e, em seguida, atualizar o [database_name]. dbo.sysfulltextcatalogs coluna caminho para o novo local unidade ou caminho de destino para a pasta padrão de catálogo de texto completo, como d:\FTData.
  7. Use o utilitário de regfind do Windows NT 4.0 Resource Kit para localizar e substituir os seguintes HKLM chaves valores do Registro para cada pasta do catálogo de texto completo (FT_Catalog_Folder) (por exemplo, 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]
    Além disso, certifique-se usar aspas normais ("") para incluir as chaves do Registro para ambos o -p e -r parâmetros. Por exemplo:
    -m \\server_2 -p "<Key Name>" <Old_FT_Catalog_Path_and_Folder> -r <New_FT_Catalog_Path_and_Folder>

    Observação: Substituir < Nome da Chave >, <Old_FT_Catalog_Path_and_Folder> e <New_FT_Catalog_Path_and_Folder> com os valores apropriados.
    Por exemplo: -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

    Para obter mais informações sobre a sintaxe para usar o utilitário regfind , digite o seguinte parâmetro em um prompt de comando DOS: regfind /?
  8. Reinicie o serviço Microsoft Search.
  9. Confirme se o texto completo novo catálogos pastas e arquivos são funcionais usando uma instrução Transact-SQL e usar um predicado CONTAINS ou FREETEXT na cláusula WHERE.

Para copiar catálogos de texto completo entre instâncias do SQL Server na mesma unidade local ou no caminho

As etapas a seguintes demonstram como mover ou copiar uma pasta do catálogo de texto completo e arquivos de um computador que está executando o SQL Server (server_1) para outro computador que está executando o SQL Server (server_2). Este artigo presume que o SQL Server possui pesquisa de texto completo instalada e que os identificadores de banco de dados e tabela mesmos existem nos servidores. Para a cópia bem-sucedida de catálogos de texto completo de uma instância do SQL Server para outro, o banco de dados identificações deve ser o mesmo. Portanto, é melhor ter server_2 (para o qual você está copiando o catálogo) ser uma réplica exata (clone) server_1.Confirm dbids tanto server_1 server_2 são os mesmos. Para fazer isso, execute os seguintes comandos em ambos os servidores:
Use dbname
go
select db_id()
para "trocar" dbids para obter o dbid correto no server_2, use sp_detach_db e sp_attach_db para desanexar e Reanexe bancos de dados corretos. Por exemplo, se você tiver dois bancos de dados, como (dbid = 7) TestDB e PerfDB (dbid = 8), desanexar dois bancos de dados e, em seguida, primeiro Reanexe o banco de dados PerfDB e, em seguida, o banco de dados TestDB . Essa troca o dbids: 8 se torna o dbid para TestDB e dbid para PerfDB se torna a 7. O dbid menor no pool de dbids disponível é sempre usado primeiro.

cuidado Para fazer isso, antes de desconectar os bancos de dados, certifique-se que os dois bancos de dados não têm qualquer catálogos de texto completo e que não são habilitado de texto completo. Consulte "procedimentos de Clean-up" a ? mais informações ? seção para as etapas para soltar catálogos de texto completo e para desativar o texto completo para um banco de dados.
  1. Confirme se os valores de dbid master.dbo.sysdatabases para bancos de dados ativados full-text são os mesmos em ambos os servidores.
  2. Confirmar que o [database_name]. dbo.sysobjects valores de identificação para as tabelas habilitadas full-text são os mesmos em ambos os servidores. Para obter mais informações sobre como obter um valor de identificação de tabela, consulte o tópico "object_id" nos manuais do SQL Server.
  3. Confirme se o nome do catálogo de texto completo e a unidade local ou o caminho são os mesmos em ambos os servidores usando sp_help_fulltext_catalogs ' FT_Catalog_Name ' .
  4. Pare o serviço Microsoft Search tanto server_1 server_2.
  5. Mapear uma letra de unidade no server_1 para a unidade ou caminho em server_2 correspondente.
  6. Copie a pasta do catálogo de texto completo e os arquivos que você identificou na etapa 3 do server_1 para server_2, usando o comando DOS xcopy . Use o nome de unidade ou caminho e pasta totalmente qualificado catálogo de texto completo como o local de origem e o nome de unidade ou caminho e pasta mapeada catálogo de texto completo como o local de destino. Se as pastas de destino não existem no server_2, usar o xcopy alterna /I e /E para criar todas as pastas de destino. Para restaurar todos os catálogos, copie todas as pastas de catálogo para server_2.
  7. Você pode usar o comando DOS RMDIR /S /Q [FT_Catalog_drive/caminho] em server_1 para remover arquivos do catálogo de texto completo em server_1.

    Observação Para restaurar catálogos individuais, siga a etapa 8. Para restaurar todos os catálogos, vá para a etapa 9.
  8. Restaure as entradas do registro que você fez backup com base nas instruções anteriores. Você talvez deseje antes de fazer backup do registro antes de tentar esta etapa.
    \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] é o catálogo pasta nome "SQLxxxxx(dbid) yyyyy(ftcatid)"
    Para uma instância nomeada do SQL Server, a entrada do registro é \SQLServer$ InstanceName \.
  9. Para restaurar todos os catálogos no servidor, restaure as seguintes entradas do Registro. No entanto, se você fizer isso, você perde todos os catálogos existentes no server_2 depois de executar essa etapa. Você talvez deseje antes de fazer backup do registro antes de tentar esta etapa.
    \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
    Observação Por padrão, os locais de texto completo binários são:
    SQL Server 7.0 : \Mssql7\FTDATA
    Microsoft. Instância do SQL Server 2000 padrão : \Arquivos de Programas\Microsoft SQL Server\MSSQL\FTDATA
    instância nomeada do SQL Server 2000 : MSSQL $ InstanceName \FTDATA
    Esses locais e caminhos de pastas podem variar para computadores diferentes. Nesse caso, você deve alterar duas entradas de registro para que os caminhos apontam para o local correto dos binários full-text depois de concluir a restauração em server_2.
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer
    Você pode usar o utilitário regfind para localizar entradas do Registro e alterar o local dos binários de texto completo.
  10. Reinicie o serviço Microsoft Search em ambos os servidores.
  11. Confirme se o texto completo novo catálogos pastas e arquivos são funcionais usando uma instrução Transact-SQL e usar um predicado CONTAINS ou FREETEXT na cláusula WHERE.

Mais Informações

O script do SQL Server a seguir demonstra como mover ou "migrar" uma pasta do catálogo de texto completo do SQL Server 7.0 (server_1) para outro computador que esteja executando o SQL Server 7.0 (server_2) para uma unidade local diferente ou o caminho local no server_2. Este artigo pressupõe que o SQL Server 7.0 com pesquisa de texto completo é instalado em um computador com Windows NT 4.0 e que os identificadores de banco de dados e tabela mesmos existem nos servidores.

Para fins de nesta ilustração, pubs (dbid = 5) de banco de dados e tabela info_edit (id = 645577338) são full-text ativada e preenchida em ambos os servidores. Substitua server_2 com o nome do servidor e substitua o nome de pasta do catálogo de texto completo e a unidade ou o caminho com o nome da pasta Catálogo de texto completo e a unidade ou caminho.

Você deve efetuar logon como um membro do grupo Administradores local do servidor e ser um membro da função de servidor sysadmin do SQL Server (ou faça logon como "sa"). Além disso, você deve ser o proprietário do banco de dados (DBO) do banco de dados para executar o SQL Server seguintes scripts.

Execute o seguinte script SQL Server em ambos os servidores:
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
execute o seguinte script SQL Server no servidor de origem (server_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
você deve executar o seguinte script SQL no servidor de destino (server_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
você pode "stop" uma população de texto completo em andamento, executando o seguinte código SQL Server:

cuidado Se a contagem de item não for igual ao número de linhas que texto completo indexado mais um adicional, o tamanho do catálogo de texto completo pode ser estar incorreta!
-- 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)
procedimentos Clean-up

Execute o seguinte script SQL em ambos os servidores:

Descartar o índice de texto completo, o catálogo de texto completo e desative pesquisa de texto completo no banco de dados 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 !

REFERÊNCIAS

Para obter mais informações sobre como obter o dbid para um banco de dados, consulte o tópico "DB_ID" nos manuais online do SQL Server.

Para determinar se um banco de dados é habilitado de texto completo, consulte os tópicos "DATABASEPROPERTY" ou "IsFulltextEnabled" nos manuais online do SQL Server.

Para obter mais informações sobre ftcatid, consulte o "sp_help_fulltext_catalogs", "OBJECTPROPERTY" ou "TableFulltextCatalogId" tópicos no manual online do SQL Server.

Propriedades

ID do artigo: 240867 - Última revisão: sexta-feira, 30 de novembro de 2007 - Revisão: 6.5
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition nas seguintes plataformas
    • Microsoft SQL Server 2000 Developer Edition
    • Microsoft SQL Server 2000 Standard Edition
    • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 7.0 Standard Edition
Palavras-chave: 
kbmt kbinfo KB240867 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 240867

Submeter comentários

 

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