Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 sono collegati, ripristinati o copiati tramite la procedura guidata di copia del database.
In questo argomento vengono illustrati gli aspetti seguenti dell'aggiornamento della ricerca full-text:
Considerazioni sulla scelta di un'opzione di aggiornamento Full-Text
Migrazione di indici Full-Text durante l'aggiornamento di un database a SQL Server 2014
Considerazioni sul ripristino di un catalogo di SQL Server 2005 Full-Text in SQL Server 2014
Collegamento di un database DI SQL Server 2005 a SQL Server 2014
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 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 ulteriori informazioni, vedi Configurazione e gestione di separatori di parole e lemmatizzatori per la ricerca e Configurazione e gestione dei filtri per la ricerca.
Host del daemon di filtri
Gli host del demone di filtri full-text sono processi che consentono di caricare e controllare in modo sicuro i componenti esterni estensibili utilizzati per indici e query, quali analizzatori lessicali, lemmatizzatori e filtri, senza compromettere l'integrità del motore 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.
Annotazioni
SQL Server 2008 ha introdotto un account del servizio per il servizio di avvio FDHOST (MSSQLFDLauncher). Questo servizio propaga le informazioni sull'account del servizio ai processi host del demone filtro di un'istanza specifica di SQL Server. Per informazioni sulla configurazione dell'account del servizio, vedere Configura l'account del servizio per il Full-text Filter Daemon Launcher.
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'aggiornamento mantiene l'indice full-text nello stesso filegroup della tabella di base o, nel caso di una tabella partizionata, nel filegroup primario.
Annotazioni
Le istruzioni DDL di SQL Server 2005 Transact-SQL che specificano i 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.
Importazione
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. Per garantire la coerenza nei risultati delle query, i cataloghi full-text devono essere ricompilati.
Annotazioni
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 di testo completo non è disponibile, gli indici di testo completo associati vengono ricreati. 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.
Ricostruire
I cataloghi full-text vengono ricompilati utilizzando i nuovi e ottimizzati segmentatori di parole. La ricompilazione degli indici può richiedere tempo. Dopo l'aggiornamento, inoltre, potrebbe essere necessaria una quantità significativa di CPU e di memoria.
Reset (Ripristina)
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 tracciamento delle modifiche viene disabilitato e le scansioni non vengono avviate automaticamente. Il catalogo resterà vuoto fino a quando non si eseguirà manualmente un popolamento completo al termine dell'aggiornamento.
Considerazioni sulla scelta di un'opzione di aggiornamento Full-Text
Quando si sceglie l'opzione di aggiornamento per il proprio aggiornamento, considerare quanto segue:
È richiesta coerenza nei risultati delle query?
SQL Server 2014 installa nuovi word breaker per l'uso da parte di 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 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 .
Annotazioni
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.
Qual è la priorità per rendere disponibile online la tua 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 .
Garantire risultati coerenti delle query dopo l'importazione di un indice di SQL Server 2005 Full-Text
Se è stato importato un catalogo full-text durante l'aggiornamento di un database di 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:
Ricostruire il catalogo full-text che contiene l'indice full-text (ALTER FULLTEXT CATALOGnome_catalogo REBUILD)
Eseguire una popolazione completa sull'indice full-text (ALTER FULLTEXT INDEX ON nome_tabella START FULL POPULATION).
Per ulteriori informazioni sui suddivisori di parole, vedere Configurazione e gestione dei suddivisori di parole e dei derivatori per la ricerca.
Aggiornamento dei file Noise-Word agli elenchi di esclusione
Le parole non significative di SQL Server 2005 sono state sostituite da stopwords 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 di SQL Server 2014 corrispondenti.
Dopo l'aggiornamento da SQL Server 2005:
Se non hai mai aggiunto, modificato o eliminato alcun file di parole irrilevanti nell'installazione di SQL Server 2005, l'elenco di parole irrilevanti di sistema dovrebbe 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 effettuare manualmente quelle modifiche nell'elenco di parole non significative corrispondente di SQL Server 2008. Per altre informazioni, vedi 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. 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. Pertanto, per eseguire il backup di un catalogo full-text in SQL Server 2014, è necessario identificare tutti i filegroup che contengono un indice full-text del catalogo e eseguire il backup di ognuno di essi, uno alla volta. Per ulteriori informazioni, vedere Creazione e ripristino di copie di backup 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 di 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 di 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 tramite collegamento, ripristino o Copia Database Guidata. 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 usata dall'istanza del server durante questi aggiornamenti del database.
Dopo aver collegato, ripristinato o copiato qualsiasi database di SQL Server 2005 in SQL Server 2014, il database diventa immediatamente disponibile e quindi 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
Transact-SQL: usa l'azione upgrade_option di sp_fulltext_service
SQL Server Management Studio: usa l'opzione di aggiornamento full-text della finestra di dialogo Proprietà server. Per altre informazioni, vedere Gestione e monitoraggio della ricerca full-text per un'istanza del server.
Considerazioni sul ripristino di un catalogo di SQL Server 2005 Full-Text in SQL Server 2014
Un metodo per aggiornare i dati full-text da un database di 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 è identico a quello di SQL Server 2005:
Il backup completo del database includerà il catalogo di testo completo. Per fare riferimento al catalogo full-text, usare il nome file di 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 di 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 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 di 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
Backup del log delle transazioni (SQL Server) (solo modello di recupero completo)
Per ripristinare un backup del database
Ripristini di database completi (modello di recupero semplice)
Ripristini di database completi (modello di recupero completo)
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, log e catalogo di 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 inC:\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 inC:\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 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 di SQL Server 2005 che contiene file di catalogo full-text in un'istanza del server SQL Server 2014, i file di catalogo vengono allegati dal percorso precedente insieme agli altri file di database, come in SQL Server 2005.
Lo stato di ogni catalogo full-text collegato in SQL Server 2014 equivale a quando il database è stato scollegato da SQL Server 2005. Se un popolamento di indici full-text è stato sospeso dall'operazione di scollegamento, il popolamento viene ripreso 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 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 associato 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).
Vedere anche
Introduzione alla ricerca testuale completa
Configurare e gestire i segmentatori di parole e gli stemmer per la ricerca
Configurare e gestire filtri per la ricerca