Condividi tramite


Aggiornamento della ricerca full-text

L'aggiornamento della ricerca full-text a SQL Server 2014 viene eseguito durante l'installazione e quando i file di database e i cataloghi full-text della versione precedente di SQL Server vengono collegati, ripristinati o copiati tramite la Copia guidata database.

In questo argomento si illustrano i seguenti aspetti dell'aggiornamento della ricerca full-text:

Aggiornamento di un'istanza del server

Per un aggiornamento sul posto, viene configurata un'istanza di SQL Server 2014 side-by-side con la versione precedente di SQL Server e viene eseguita la migrazione dei dati. Se la versione precedente di SQL Server aveva installato la ricerca full-text, viene installata automaticamente una nuova versione della ricerca full-text. L'installazione side-by-side indica che ognuno dei componenti seguenti esiste 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 ha introdotto un account di servizio per il servizio launcher FDHOST (MSSQLFDLauncher). Questo servizio propaga le informazioni sull'account del servizio ai 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 ogni indice full-text risiede in un catalogo full-text appartenente a un filegroup, ha un percorso fisico e viene considerato come 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

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

Opzioni di aggiornamento full-text

Quando si aggiorna un'istanza del server a SQL Server 2014, 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. Tuttavia, un catalogo full-text importato non usa i nuovi word breaker installati con la 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 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.

Reset
I cataloghi full-text vengono ripristinati. Quando si esegue l'aggiornamento da SQL Server 2005, i file di catalogo 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, considerare gli elementi seguenti:

  • È richiesta coerenza nei risultati delle query?

    SQL Server 2014 installa nuovi word breaker da usare da Full-Text e ricerca 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 cerca una frase interrotta in modo diverso dal word breaker in una versione precedente di SQL Server e il word breaker corrente, potrebbe non essere recuperata un documento o una riga 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 in SQL Server 2014, è consigliabile che la colonna che funge da 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 di SQL Server 2005

Se un catalogo full-text è stato importato durante l'aggiornamento di un database SQL Server 2005 a SQL Server 2014, le mancate corrispondenze tra la query e il contenuto dell'indice full-text potrebbero verificarsi a causa delle differenze nel comportamento dei word breaker precedenti e nuovi. 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

SQL Server 2005 parole non significative sono state sostituite da parole non significative in SQL Server 2008 e versioni successive. Quando un database viene aggiornato a SQL Server 2014 da SQL Server 2005, i file di parole non significative non vengono più usati. Tuttavia, i vecchi file di parole non significative vengono archiviati nella cartella FTDATA\ FTNoiseThesaurusBak e possono essere usati in un secondo momento durante l'aggiornamento o la compilazione degli elenchi di parole non significative corrispondenti SQL Server 2014.

Dopo l'aggiornamento da SQL Server 2005:

  • Se non hai mai aggiunto, modificato o eliminato file di parole non significative nell'installazione di SQL Server 2005, l'elenco di parole non significative di sistema deve soddisfare le tue esigenze.

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

  • Se non si desidera applicare parole non significative 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 seguente (sostituendo il database con il nome del database aggiornato e la tabella 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. Pertanto, per eseguire il backup di un catalogo full-text in SQL Server 2014, è necessario identificare ogni filegroup che contiene un indice full-text del catalogo e eseguirne il backup, uno alla volta. Per altre informazioni, vedere Backup e ripristino di indici e cataloghi full-text.

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 SQL Server 2005 per i cataloghi full-text si applica ancora, ad eccezione del fatto che il servizio MSFTESQL non esiste in SQL Server 2014. Per informazioni sul processo di 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 2014

I file di database e i cataloghi full-text di una versione precedente di SQL Server possono essere aggiornati a un'istanza del server SQL Server 2014 esistente usando collegamento, ripristino o Copia guidata database. SQL Server 2005 indici full-text, 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.

Dopo aver collegato, ripristinato o copiato qualsiasi database SQL Server 2005 in SQL Server 2014, il database diventa immediatamente disponibile e viene quindi 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 2014

Un metodo di aggiornamento dei dati fulltext da un database SQL Server 2005 a SQL Server 2014 consiste nel ripristinare un backup completo del database in SQL Server 2014.

Durante l'importazione di un catalogo full-text di SQL Server 2005, è possibile eseguire il backup e ripristinare il database e il file di catalogo. Il comportamento è lo stesso di in SQL Server 2005:

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

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

Per altre informazioni sul backup e il ripristino SQL Server cataloghi full-text 2005, vedere Backup e ripristino di cataloghi e ripristino Full-Text cataloghi e ripristino e Full-Text cataloghiin SQL Server 2005 Libri online.

Quando il database viene ripristinato in SQL Server 2014, verrà creato un nuovo file di database per il catalogo full-text. Il nome predefinito di questo file è ftrow_nome-catalogo.ndf. Ad esempio, se il nome del catalogo è cat1, il nome predefinito del file di database SQL Server 2014 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 usata la clausola MOVE nell'istruzione RESTORE per ripristinare un database SQL Server 2005 denominato ftdb1. I file di database, log e catalogo del SQL Server 2005 vengono spostati in nuovi percorsi nell'istanza del server SQL Server 2014, come indicato di seguito:

  • Il file di database, ftdb1.mdf, viene spostato in C:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL12.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 SQL Server 2005 a SQL Server 2014

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 SQL Server 2005 che contiene file di catalogo full-text in un'istanza del server SQL Server 2014, i file di catalogo vengono collegati dal percorso precedente insieme agli altri file di database, uguali a in SQL Server 2005.

Lo stato di ogni catalogo full-text collegato in SQL Server 2014 è uguale a quando il database è stato scollegato da SQL Server 2005. Se una popolazione di indici full-text è stata sospesa dall'operazione di scollegamento, la popolazione viene ripresa in SQL Server 2014 e l'indice full-text diventa disponibile per la ricerca full-text.

Se SQL Server 2014 non riesce a trovare un file di catalogo full-text o se il file full-text è stato spostato durante l'operazione di collegamento senza specificare una nuova posizione, il comportamento dipende dall'opzione di aggiornamento full-text selezionato. 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 sullo scollegamento e il collegamento di un database, vedere Scollegamento e collegamento del database (SQL Server), CREATE DATABASE (SQL Server Transact-SQL), sp_attach_db e sp_detach_db (Transact-SQL).

Vedere anche

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