Aggiornamento della ricerca full-text in SQL Server 2005

L'aggiornamento della ricerca full-text da SQL Server 2005 a SQL Server 2012 viene effettuato in fase di 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 si illustrano i seguenti aspetti dell'aggiornamento della ricerca full-text da SQL Server 2005:

  • 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 2012

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

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

Aggiornamento di un'istanza del server

Per un aggiornamento sul posto, un'istanza di SQL Server 2012 viene installata in modalità side-by-side 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 side-by-side 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 ulteriori 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]

    In SQL Server 2008 è stato 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 Impostazione dell'account del servizio dell'Utilità di avvio del daemon di filtri full-text.

In SQL Server 2005 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 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.

[!NOTA]

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

Opzioni di aggiornamento full-text

Quando si aggiorna un'istanza del server in SQL Server 2012, 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 ricompilazione. Se ad esempio si utilizza una sola CPU, l'importazione è quasi 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 non è disponibile un catalogo full-text, vengono ricompilati 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.

  • Ricompilazione
    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 si esegue l'aggiornamento da SQL Server 2005, i file dei cataloghi full-text vengono rimossi, ma i metadati per i cataloghi full-text e 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, tenere presente quanto segue:

  • È richiesta coerenza nei risultati delle query?

    In SQL Server 2012 sono installati nuovi word breaker da utilizzare 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 si esegue 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 quello 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, è fortemente consigliabile utilizzare l'opzione Ricompila.

    [!NOTA]

    Per gli indici full-text in SQL Server 2012, è consigliabile che la colonna utilizzata come chiave full-text sia un tipo di dati Integer. Per ulteriori 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 di SQL Server 2005

Se un catalogo full-text viene importato durante l'aggiornamento di un database da SQL Server 2005 a SQL Server 2012, 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 CATALOG catalog_name REBUILD)

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

Per ulteriori 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

I file di parole non significative di SQL Server 2005 sono stati sostituiti da elenchi di parole non significative in SQL Server 2008 e versioni successive. Quando un database viene aggiornato a SQL Server 2012 da SQL Server 2005, 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 2012.

Dopo l'aggiornamento da SQL Server 2005:

  • 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 disabilitare 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 table:

    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 in SQL Server 2012, è pertanto necessario identificare ogni filegroup contenente un indice full-text del catalogo ed eseguirne il backup uno alla volta. Per ulteriori informazioni, vedere Backup e ripristino di indici e cataloghi full-text.

I cataloghi full-text importati da SQL Server 2005 rappresentano ancora 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 2012. Per informazioni sul processo in SQL Server 2005, vedere 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 a SQL Server 2012

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 2012 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 ricompilati. La proprietà del server upgrade_option consente di controllare 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 in SQL Server 2012, 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 per il ripristino di un catalogo full-text di SQL Server 2005 in SQL Server 2012

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

Durante l'importazione di un catalogo di SQL Server 2005 è possibile eseguire il backup e ripristinare il file di database e 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 è offline, 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 online di SQL Server 2005.

Quando viene ripristinato il database in SQL Server 2012, 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 catalog-name utilizzato è cat1, il nome predefinito del file database di SQL Server 2012 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

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 2012, come segue:

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

  • Il file di log, ftdb1_log.ldf, viene spostato in una directory di log nell'unità disco dove risiede il log, log_drive:\log_directory\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 verranno eliminati.

RESTORE DATABASE [ftdb1] FROM  DISK = N'C:\temp\ftdb1.bak' WITH  FILE = 1,
   MOVE N'ftdb1' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\ftdb1.mdf',
    MOVE N'ftdb1_log' TO N'log_drive:\log_directory\ftdb1_log.ldf',
    MOVE N'sysft_cat90' TO N'C:\temp';

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

In SQL Server 2008 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 si collega un database di SQL Server 2005 contenente file di cataloghi full-text in un'istanza del server di SQL Server 2012, 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 2012 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 2012 e l'indice full-text viene reso disponibile per la ricerca full-text.

Se in SQL Server 2012 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 Ricompila, il catalogo full-text collegato viene ricompilato. 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 Collegamento e scollegamento di un database (SQL Server), CREATE DATABASE (Transact-SQL), sp_attach_db e sp_detach_db (Transact-SQL).

Vedere anche

Concetti

Introduzione alla ricerca full-text

Configurazione e gestione di word breaker e stemmer per la ricerca

Configurazione e gestione di filtri per la ricerca