Aggiornamento della ricerca full-text

L'aggiornamento della ricerca full-text in SQL Server 2008 viene eseguito durante l'installazione e durante il collegamento, il ripristino o la copia dei file di database e dei cataloghi full-text di una versione precedente di SQL Server mediante la Copia guidata database.

In questo argomento vengono illustrati i seguenti aspetti dell'aggiornamento full-text:

  • Aggiornamento di un'istanza del server

  • Opzioni di aggiornamento full-text

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

  • Migrazione degli indici full-text durante l'aggiornamento di un database a SQL Server 2008

  • Considerazioni per il ripristino di un catalogo full-text di SQL Server 2005 in SQL Server 2008

  • Collegamento di un database di SQL Server 2005 a SQL Server 2008

Aggiornamento di un'istanza del server

Per un aggiornamento sul posto, un'istanza di SQL Server 2008 viene installata in modalità affiancata con la versione precedente di SQL Server e 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.

Componente

Descrizione

Word breaker, stemmer e filtri

Ogni istanza utilizza 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 ulteriori informazioni, vedere Word breaker e stemmer e Filtri di ricerca full-text.

Host del daemon di filtri

Gli host del daemon di filtri full-text sono processi che caricano e controllano in modo sicuro i componenti estensibili di terze parti utilizzati per indici e query, quali word breaker, stemmer e filtri, senza compromettere l'integrità del motore di ricerca full-text. Un'istanza del server utilizza 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.

NotaNota
In SQL Server 2008 viene introdotto un account del servizio per l'utilità di avvio FDHOST (MSSQLFDLauncher). Questo servizio propaga le informazioni sull'account del servizio nei processi dell'host del daemon di filtri di un'istanza specifica di SQL Server. Per informazioni sull'impostazione dell'account del servizio, vedere Procedura: Impostazione dell'account del servizio per l'utilità di avvio di FDHOST (MSSQLFDLauncher) per la ricerca full-text (SQL Server Configuration Manager).

In SQL Server 2005 e versioni precedenti, 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 un catalogo full-text è un concetto logico, ovvero un oggetto virtuale, che fa riferimento a 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 vecchio percorso 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.

Per ulteriori informazioni sull'architettura della ricerca full-text in SQL Server 2008, vedere Architettura della ricerca full-text.

[!NOTA]

Le istruzioni DDL Transact-SQL di SQL Server 2005 che specificano cataloghi full-text funzionano correttamente.

Opzioni di aggiornamento full-text

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

  • Importazione
    I cataloghi full-text vengono importati. In genere, l'importazione è molto più veloce della ricostruzione. Se ad esempio si utilizza una sola CPU, l'importazione è quasi 10 volte più veloce della ricostruzione. Tuttavia, un catalogo full-text importato non utilizza i word breaker nuovi e migliorati introdotti in SQL Server 2008, pertanto potrebbe essere necessario ricostruire i cataloghi full-text.

    [!NOTA]

    La ricostruzione 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 ricostruzione di utilizzare tutte le CPU.

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

    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 ricostruiti utilizzando i nuovi word breaker ottimizzati. La ricostruzione degli indici può richiedere del tempo. Dopo l'aggiornamento, inoltre, potrebbe essere necessaria una quantità significativa di CPU e di memoria.

  • Reimposta
    I cataloghi full-text vengono reimpostati. I file del catalogo full-text di SQL Server 2005 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:

  • Modalità in cui vengono utilizzati i word breaker

    Il servizio di ricerca full-text di SQL Server 2008 include nuovi word breaker e stemmer che potrebbero modificare i risultati delle query full-text rispetto alle versioni precedenti per un criterio di testo o uno scenario specifico. Pertanto, la modalità di utilizzo dei word breaker è importante nella scelta di un'opzione di aggiornamento appropriata:

    • Se i word breaker della lingua utilizzata per la ricerca full-text non sono stati modificati in SQL Server 2008 o se l'accuratezza delle chiamate non è fondamentale, è consigliabile utilizzare l'importazione. Se successivamente si verificano problemi relativi alle chiamate, è possibile eseguire l'aggiornamento ai nuovi word breaker ricostruendo semplicemente i cataloghi full-text. Per ulteriori informazioni, vedere "Word breaker e indici full-text importati" più avanti in questa sezione.

    • Se invece l'accuratezza delle chiamate è importante e si utilizza uno dei word breaker ottimizzati in SQL Server 2008, è consigliabile utilizzare la ricostruzione.

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

    Con la ricostruzione 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 ricostruzione consente di ottenere prestazioni ideali delle query full-text dopo l'aggiornamento. In questo caso, è fortemente consigliabile utilizzare l'opzione Ricostruisci.

    [!NOTA]

    Per gli indici full-text in SQL Server 2008, è consigliabile che la colonna utilizzata come chiave full-text sia un tipo di dati integer. Per ulteriori informazioni, vedere Ottimizzazione delle prestazioni degli indici full-text.

  • Priorità della disponibilità in linea dell'istanza del server

    L'importazione o la ricostruzione 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à in linea dell'istanza stessa. Se la disponibilità in linea dell'istanza del server è importante ed è possibile eseguire un popolamento manuale dopo l'aggiornamento, è consigliabile utilizzare l'opzione Reimposta.

Utilizzo dei nuovi word breaker dopo l'importazione di un indice full-text di SQL Server 2005

Quando si importa un indice full-text di SQL Server 2005, è importante comprendere che SQL Server 2008 include nuovi word breaker per molte delle lingue disponibili in SQL Server 2005. Solo i word breaker per inglese, coreano, tailandese e cinese (tutti i tipi) restano invariati. Per le altre lingue, in SQL Server 2008 è stata introdotta una nuova generazione di word breaker che potenzialmente potrebbero comportarsi in modo leggermente diverso dai word breaker di SQL Server 2005 negli indici full-text di SQL Server 2005 importati.

Se un catalogo full-text è stato importato durante l'aggiornamento di un database di SQL Server 2005 a SQL Server 2008, è possibile che una o più lingue utilizzate dagli indici full-text nel catalogo full-text siano ora associate ai nuovi word breaker. Per tali lingue, quando in una query vengono utilizzati i nuovi word breaker, potrebbero verificarsi occasionalmente mancate corrispondenze tra la query e il contenuto dell'indice full-text a causa di piccole 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, effettuare una delle operazioni seguenti:

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

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

Nota importanteImportante

Se i cataloghi e gli indici full-text utilizzano i word breaker non modificati, ad esempio i word breaker inglesi, è possibile che non si verifichi alcuna mancata corrispondenza. I word breaker utilizzati in fase di query saranno quelli utilizzati durante la creazione dell'indice al momento dell'indicizzazione e nelle query successive.

Per informazioni sui word breaker, vedere Word breaker e stemmer.

Aggiornamento di file di parole non significative a elenchi relativi

Le parole non significative di SQL Server 2005 non sono le stesse di quelle utilizzate in SQL Server 2008. Quando un database viene aggiornato a SQL Server 2008 da una versione precedente, i file di parole non significative non vengono più utilizzati in SQL Server 2008. Tali file vengono tuttavia archiviati nella cartella FTDATA\FTNoiseThesaurusBak e possono essere utilizzati in seguito durante l'aggiornamento o la creazione degli elenchi di parole non significative corrispondenti di SQL Server 2008.

Operazioni da eseguire dopo l'aggiornamento:

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

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

  • Se non si desidera applicare alcuna parola non significativa agli indici full-text (ad esempio, se sono stati eliminati o cancellati i file di parole non significative nell'installazione di SQL Server 2005), è necessario disattivare l'elenco di parole non significative per ogni indice full-text aggiornato. Eseguire 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 ricostruiti 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 in SQL Server 2008, è pertanto necessario identificare ogni filegroup che contiene un indice full-text del catalogo ed eseguirne il backup uno alla volta. Per ulteriori informazioni, vedere Backup e ripristino di un catalogo full-text di SQL Server 2008.

Per i cataloghi full-text importati da SQL Server 2005, il catalogo full-text è ancora un file di database nel proprio filegroup. Il processo di backup di SQL Server 2005 continua a essere applicato per i cataloghi full-text ad eccezione del fatto che il servizio MSFTESQL non esiste in SQL Server 2008. Per informazioni sul processo in SQL Server 2005, vedere Backup e ripristino di cataloghi full-text nella documentazione in linea di SQL Server 2005.

[!NOTA]

Per ulteriori informazioni sul backup e il ripristino di un database di SQL Server 2008, vedere Backup e ripristino di un catalogo full-text di SQL Server 2008.

Migrazione degli indici full-text durante l'aggiornamento di un database a SQL Server 2008

I file di database e i cataloghi full-text di una versione precedente di SQL Server possono essere aggiornati a un'istanza del server di SQL Server 2008 esistente mediante il collegamento, il ripristino o la Copia guidata database. Gli indici full-text di SQL Server 2005, se presenti, vengono importati, reimpostati o ricostruiti. Gli indici full-text di SQL Server 2000, se presenti, vengono ricostruiti o reimpostati. La proprietà del server upgrade_option controlla l'opzione di aggiornamento full-text utilizzata dall'istanza del server durante questi aggiornamenti del database.

Una volta collegato, ripristinato o copiato un database di SQL Server 2005 o SQL Server 2000 in SQL Server 2008, 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 ricostruzione 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 ricostruiti gli indici full-text associati.

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

Considerazioni per il ripristino di un catalogo full-text di SQL Server 2005 in SQL Server 2008

Un metodo di aggiornamento dei dati full-text da un database di SQL Server 2005 a SQL Server 2008 è ripristinare il backup completo di un database in SQL Server 2008.

Durante l'importazione di un catalogo è possibile eseguire il backup e ripristinare il database e il file di catalogo. Il comportamento è uguale a quello di SQL Server 2005:

  • Il backup completo del database includerà il catalogo full-text. Per fare riferimento al catalogo full-text, utilizzare il relativo nome file di SQL Server 2005, sysft_+catalog-name.

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

Per ulteriori informazioni sul backup e il ripristino dei cataloghi full-text di SQL Server 2005, vedere Backup e ripristino di cataloghi full-text e Backup e ripristino di file e cataloghi full-textnella documentazione in linea di SQL Server 2005.

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

Dopo l'importazione dei cataloghi, sys.database_files e sys.master_files vengono aggiornati per 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

[!NOTA]

Per ulteriori informazioni sul ripristino degli indici full-text di SQL Server 2008, vedere Ripristino a fasi e indici full-text.

Esempio

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

  • Il file di database, ftdb1.mdf, viene spostato in C:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL10.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\MSSQL10.MSSQLSERVER\MSSQL\DATA\ftdb1.mdf',
    MOVE N'ftdb1_log' TO N'log_drive:\log_directory\ftdb1_log.ldf',
    MOVE N'sysft_cat90' TO N'C:\temp';

Collegamento di un database di SQL Server 2005 a SQL Server 2008

In SQL Server 2008 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 si collega un database di SQL Server 2005 contenente file di cataloghi full-text in un'istanza del server di SQL Server 2008, i file di catalogo vengono collegati dal percorso precedente insieme agli altri file del database, come in SQL Server 2005.

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

Se in SQL Server 2008 non è possibile 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 Ricostruisci, il catalogo full-text collegato viene ricostruito. Se l'opzione di aggiornamento full-text è Reimposta, il catalogo full-text collegato viene reimpostato.

Per ulteriori informazioni sul collegamento e lo scollegamento di un database, vedere Scollegamento e collegamento di database, CREATE DATABASE (Transact-SQL), sp_attach_db e sp_detach_db (Transact-SQL).