Aggiornare la ricerca full-text

Si applica a: SQL Server Database SQL di Azure

SQL Server aggiorna la ricerca full-text durante l’installazione o quando colleghi, ripristini o copi file di database e cataloghi full-text da una versione precedente di SQL Server.

Aggiornamento di un'istanza del server

Per un aggiornamento sul posto, un'istanza di SQL Server viene installata in modalità affiancata con la versione precedente di SQL Server, quindi viene eseguita la migrazione dei dati. Se nella versione precedente di SQL Server è installata la ricerca full-text, viene installata automaticamente una nuova versione della ricerca full-text. L'installazione affiancata implica l'esistenza di ognuno dei componenti seguenti a livello di istanza di SQL Server.

Word breaker, stemmer e filtri
In ogni istanza viene utilizzato ora un proprio set di word breaker, stemmer e filtri, anziché ricorrere alla versione di tali componenti disponibile nel sistema operativo. A livello di istanza, inoltre, la registrazione e la configurazione di questi componenti risulta più semplice. Per altre informazioni, vedere Configurazione e gestione di word breaker e stemmer per la ricerca e Configurazione e gestione di filtri per la ricerca.

Host del daemon di filtri
Gli host del daemon di filtri full-text sono processi che consentono di caricare e controllare in modo sicuro i componenti estensibili esterni utilizzati per indici e query, quali word breaker, stemmer e filtri, senza compromettere l'integrità del motore di ricerca full-text. In un'istanza del server viene utilizzato un processo a thread multipli per tutti i filtri a thread multipli e un processo a thread singolo per tutti i filtri a thread singolo.

Nota

SQL Server 2008 (10.0.x) ha introdotto un account del servizio per il servizio FDHOST Launcher (MSSQLFDLauncher). Questo servizio propaga le informazioni sull'account del servizio nei processi host del daemon di filtri di un'istanza specifica di SQL Server. Per informazioni sulla configurazione dell'account del servizio, vedere Impostazione dell'account del servizio dell'Utilità di avvio del daemon di filtri full-text.

In SQL Server 2005 (9.x) ogni indice full-text risiede in un catalogo full-text che appartiene a un filegroup, dispone di un percorso fisico e viene considerato un file di database. In SQL Server 2008 (10.0.x) e versioni successive, un catalogo full-text è un oggetto logico o virtuale che contiene un gruppo di indici full-text. Pertanto, un nuovo catalogo full-text non viene considerato un file di database con un percorso fisico. Tuttavia, durante l'aggiornamento di un catalogo full-text contenente file di dati viene creato un nuovo filegroup nello stesso disco mantenendo in questo modo il vecchio comportamento I/O su disco dopo l'aggiornamento. Tutti gli indici full-text di quel catalogo vengono posizionati nel nuovo filegroup se esiste il percorso radice. Se il percorso precedente del catalogo full-text non è valido, l'indice full-text rimane nello stesso filegroup della tabella di base o nel filegroup primario nel caso di una tabella partizionata.

Opzioni di aggiornamento full-text

Quando si aggiorna un'istanza di SQL Server, l'interfaccia utente consente di scegliere una delle opzioni di aggiornamento full-text seguenti.

Importa
I cataloghi full-text vengono importati. In genere, l'importazione è molto più veloce della ricompilazione. Se ad esempio si utilizza solo una CPU, l'importazione è di circa 10 volte più veloce della ricompilazione. Un catalogo full-text importato, tuttavia, non utilizza i nuovi word breaker installati nella versione più recente di SQL Server. Ricompilare i cataloghi full-text per garantire la coerenza nei risultati delle query.

Nota

La ricompilazione può essere eseguita in modalità a thread multipli e, nel caso in cui siano disponibili più di 10 CPU, può risultare più veloce dell'importazione se si consente alla ricompilazione di utilizzare tutte le CPU.

Se un catalogo full-text non è disponibile, gli indici full-text associati vengono ricreati. Questa opzione è disponibile solo per i database di SQL Server 2005 (9.x).

Per informazioni sull'impatto dell'importazione di un indice full-text, vedere "Considerazioni per la scelta di un'opzione di aggiornamento full-text" più avanti in questo argomento.

Ricostruzione
I cataloghi full-text vengono ricompilati utilizzando i nuovi word breaker ottimizzati. La ricompilazione degli indici può richiedere tempo. Dopo l'aggiornamento, inoltre, potrebbe essere necessaria una quantità significativa di CPU e di memoria.

Reimposta
I cataloghi full-text vengono ripristinati. Quando esegui l’aggiornamento da SQL Server 2005 (9.x), i file del catalogo full-text vengono rimossi, ma i metadati per i cataloghi e per gli indici full-text vengono mantenuti. Dopo l'aggiornamento, in tutti gli indici full-text il rilevamento delle modifiche viene disabilitato e le ricerche per indicizzazione non vengono avviate automaticamente. Il catalogo resterà vuoto fino a quando non si eseguirà manualmente un popolamento completo al termine dell'aggiornamento.

Considerazioni per la scelta di un'opzione di aggiornamento full-text

Quando si sceglie l'opzione di aggiornamento, considerare gli elementi seguenti:

  • È richiesta coerenza nei risultati delle query?

    SQL Server installa nuovi word breaker da usare per la ricerca full-text e semantica. I word breaker vengono utilizzati sia in fase di indicizzazione che di esecuzione delle query. Se non si ricompilano i cataloghi full-text, i risultati di ricerca potrebbero risultare incoerenti. Se effettui una query full-text che esegue la ricerca di una frase divisa in modo diverso dal word breaker in una versione precedente di SQL Server rispetto a quella corrente, è possibile che si verifichi il mancato recupero di una riga o documento contenente la frase. Questo problema si verifica perché le frasi indicizzate sono state divise in base a una logica diversa da quella utilizzata dalla query. Per risolvere il problema, ripopolare (ricompilare) i cataloghi full-text con i nuovi word breaker in modo che il comportamento in fase di indicizzazione e di esecuzione delle query sia lo stesso. A tale scopo, è possibile scegliere l'opzione Ricompila oppure scegliere l'opzione Importa e avviare manualmente la ricompilazione.

  • Eventuale presenza di indici full-text compilati in colonne chiave full-text di tipo integer

    Con la ricompilazione vengono eseguite ottimizzazioni interne che in alcuni casi migliorano le prestazioni di esecuzione delle query dell'indice full-text aggiornato. In particolare, se si dispone di cataloghi full-text che contengono indici full-text per i quali la colonna chiave full-text della tabella di base è un tipo di dati integer, la ricompilazione consente di ottenere prestazioni ideali delle query full-text dopo l'aggiornamento. In questo caso, è consigliabile usare l'opzione Ricompila .

    Nota

    Per gli indici full-text, è consigliabile che la colonna utilizzata come chiave full-text sia un tipo di dati integer. Per altre informazioni, vedere Miglioramento delle prestazioni di indici full-text.

  • Priorità della disponibilità online dell'istanza del server

    L'importazione o la ricompilazione durante l'aggiornamento richiede l'utilizzo di molte risorse della CPU ritardando in questo modo l'aggiornamento del resto dell'istanza del server e la disponibilità online dell'istanza stessa. Se la disponibilità online dell'istanza del server è essenziale e si desidera eseguire un popolamento manuale dopo l'aggiornamento, è consigliabile utilizzare l'opzione Reimposta .

Garanzia di coerenza dei risultati delle query dopo l'importazione di un indice full-text

Se un catalogo full-text viene importato durante l'aggiornamento di un database SQL Server 2005 (9.x), potrebbero verificarsi mancate corrispondenze tra la query e il contenuto dell'indice full-text a causa di differenze nel comportamento dei vecchi e dei nuovi word breaker. In tal caso, per garantire una totale corrispondenza tra le query e il contenuto dell'indice full-text, utilizzare una delle opzioni seguenti:

  • Ricompilare il catalogo full-text che contiene l'indice full-text (ALTER FULLTEXT CATALOGnome_catalogo REBUILD)

  • Eseguire un'istruzione FULL POPULATION sull'indice full-text (ALTER FULLTEXT INDEX ON nome_tabella START FULL POPULATION).

Per altre informazioni sui word breaker, vedere Configurazione e gestione di word breaker e stemmer per la ricerca.

Aggiornamento di file di parole non significative agli elenchi corrispondenti

Quando si aggiorna un database da SQL Server 2005 (9.x), i file delle parole non significative non vengono più utilizzati. Tali file vengono tuttavia archiviati nella cartella FTDATA\ FTNoiseThesaurusBak e possono essere utilizzati in seguito durante l'aggiornamento o la compilazione degli elenchi di parole non significative corrispondenti di SQL Server.

Dopo l'aggiornamento da SQL Server 2005 (9.x):

  • Se nell'installazione di SQL Server 2005 (9.x) non sono mai stati aggiunti, modificati o eliminati file di parole non significative, l'elenco di parole non significative di sistema dovrebbe soddisfare le tue esigenze.

  • Se i file di parole non significative sono stati modificati in SQL Server 2005 (9.x), tali modifiche vengono perse durante l'aggiornamento. Per ricreare tali aggiornamenti, è possibile rieseguire manualmente le modifiche apportate nell'elenco di parole non significative di corrispondente. Per altre informazioni, vedi ALTER FULLTEXT STOPLIST (Transact-SQL).

  • Se non desideri applicare alcuna parola non significativa agli indici full-text (ad esempio, se hai eliminato o cancellato i file di parole non significative nell'installazione di SQL Server 2005 (9.x)), devi disabilitare l'elenco di parole non significative per ogni indice full-text aggiornato. Esegui l'istruzione Transact-SQL riportata di seguito (sostituendo database con il nome del database aggiornato e table con il nome della tabella):

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

    La clausola STOPLIST OFF rimuove l'applicazione di filtri alle parole non significative e attiva la popolazione della tabella senza filtrare le parole considerate non significative.

Backup e cataloghi full-text importati

Per i cataloghi full-text ricompilati o reimpostati durante l'aggiornamento e per i nuovi cataloghi full-text, il catalogo full-text è un concetto logico e non risiede in un filegroup. Per eseguire il backup di un catalogo full-text, devi pertanto identificare ogni filegroup contenente un indice full-text del catalogo ed eseguirne il backup, uno alla volta. Per altre informazioni, vedere Backup e ripristino di indici e cataloghi full-text.

I cataloghi full-text importati da SQL Server 2005 (9.x) rappresentano ancora file di database nel proprio filegroup. Il processo di backup di SQL Server 2005 (9.x) per i cataloghi full-text continua a essere applicato, ad eccezione del fatto che il servizio MSFTESQL non esiste in SQL Server. Per informazioni sul processo di SQL Server 2005 (9.x), vedi Backup e ripristino di cataloghi full-text nella documentazione online di SQL Server 2005.

Migrazione degli indici full-text durante l'aggiornamento di un database

I file di database e i cataloghi full-text di una versione precedente di SQL Server possono essere aggiornati a un'istanza esistente mediante il collegamento, il ripristino o Copia guidata database. Gli indici full-text di SQL Server 2005 (9.x) se presenti, vengono importati, reimpostati o ricompilati. La proprietà del server upgrade_option consente di controllare l'opzione di aggiornamento full-text usata dall'istanza del server durante questi aggiornamenti del database.

Una volta collegato, ripristinato o copiato un database di SQL Server 2005 (9.x) in un’istanza più recente, il database viene reso immediatamente disponibile e viene aggiornato automaticamente. A seconda della quantità di dati indicizzati, l'importazione può richiedere diverse ore, mentre la ricompilazione può risultare dieci volte più lunga. Si noti inoltre che quando l'opzione di aggiornamento è impostata sull'importazione, se non è disponibile un catalogo full-text vengono ricompilati gli indici full-text associati.

Per modificare il comportamento dell'aggiornamento full-text in un'istanza del server

Considerazioni sul ripristino di un catalogo full-text di SQL Server 2005 (9.x)

Un metodo di aggiornamento dei dati full-text da un database di SQL Server 2005 (9.x) consiste nel ripristinare il backup completo di un database in un’istanza più recente di SQL Server.

Durante l'importazione di un catalogo full-text di SQL Server 2005 (9.x), puoi eseguire il backup e ripristinare il file di database e di catalogo. Il comportamento è uguale a quello in SQL Server 2005 (9.x):

  • Il backup completo del database includerà il catalogo full-text. Per fare riferimento al catalogo full-text, usa il relativo nome file di SQL Server 2005 (9.x), sysft_+nome-catalogo.

  • Se il catalogo full-text è offline, il backup non verrà eseguito correttamente.

Per altre informazioni sul backup e il ripristino dei cataloghi full-text di SQL Server 2005 (9.x), vedi Backup e ripristino di cataloghi full-text e Backup e ripristino di file e cataloghi full-text nella documentazione online di SQL Server 2005 (9.x).

Quando viene ripristinato il database in un’istanza più recente di SQL Server, viene creato un nuovo file di database per il catalogo full-text. Il nome predefinito di questo file è ftrow_nome-catalogo.ndf. Se ad esempio nome-catalogo è cat1, il nome predefinito del database di SQL Server sarà ftrow_cat1.ndf. Se però il nome predefinito è già utilizzato nella directory di destinazione, il nome del nuovo file di database sarà ftrow_nome-catalogo{GUID}.ndf, dove GUID è l'identificatore univoco globale del nuovo file.

Dopo l'importazione dei cataloghi, sys.database_files e sys.master_filesvengono aggiornati in modo da rimuovere le voci di catalogo e la colonna path in sys.fulltext_catalogs viene impostata su NULL.

Per eseguire il backup di un database

Per ripristinare un backup del database

Esempio

Nell'esempio seguente viene utilizzata la clausola MOVE nell'istruzione RESTORE per ripristinare un database di SQL Server 2005 (9.x) denominato ftdb1. I file di database, di log e di catalogo di SQL Server 2005 (9.x) vengono spostati nei nuovi percorsi nell'istanza del server di SQL Server, come segue:

  • Il file di database, ftdb1.mdf, viene spostato in C:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL13.MSSQLSERVER\MSSQL\DATA\ftdb1.mdf.

  • Il file di log, ftdb1_log.ldf, viene spostato in una directory di log nell'unità disco di log, unità_log:\directory_log\ftdb1_log.ldf.

  • I file di catalogo che corrispondono al catalogo sysft_cat90 vengono spostati in C:\temp. Dopo essere stati importati, gli indici full-text vengono automaticamente posizionati in un file di database, C:\ftrow_sysft_cat90.ndf, e C:\temp verrà eliminato.

RESTORE DATABASE [ftdb1] FROM  DISK = N'C:\temp\ftdb1.bak' WITH  FILE = 1,  
   MOVE N'ftdb1' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.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';  

Collegamento di un database di SQL Server 2005

In SQL Server 2008 (10.0.x) e versioni successive, un catalogo full-text è un concetto logico che fa riferimento a un gruppo di indici full-text. Il catalogo full-text è un oggetto virtuale che non appartiene ad alcun filegroup. Tuttavia, quando colleghi un database di SQL Server 2005 (9.x) contenente file di cataloghi full-text in un'istanza del server di SQL Server più recente, i file di catalogo vengono collegati dal percorso precedente insieme agli altri file del database, come in SQL Server 2005 (9.x).

Lo stato di ogni catalogo full-text collegato in SQL Server corrisponde a quello di quando il database era scollegato da SQL Server 2005 (9.x). Se il popolamento dell'indice full-text è stato sospeso mediante un'operazione di scollegamento, esso viene ripreso in SQL Server e l'indice full-text viene reso disponibile per la ricerca full-text.

Se in SQL Server non riesci a trovare un file del catalogo full-text o se il file full-text è stato spostato durante l'operazione di collegamento senza specificare un nuovo percorso, il comportamento dipende dall'opzione di aggiornamento full-text selezionata. Se l'opzione di aggiornamento full-text è Importa o Ricompila, il catalogo full-text collegato viene ricompilato. Se l'opzione di aggiornamento full-text è Reimposta, il catalogo full-text collegato viene reimpostato.

Per altre informazioni sul collegamento e lo scollegamento di un database, vedi Collegamento e scollegamento di un database (SQL Server), CREATE DATABASE (SQL Server Transact-SQL), sp_attach_db e sp_detach_db (Transact-SQL).

Vedi anche

Introduzione alla ricerca full-text
Configurazione e gestione di word breaker e stemmer per la ricerca
Configurare e gestire filtri per la ricerca