sp_fulltext_table (Transact-SQL)
Contrassegna una tabella per l'indicizzazione full-text oppure elimina tale contrassegno.
Importante |
---|
Questa caratteristica verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server. Evitare di utilizzare questa caratteristica in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. Utilizzare in alternativa CREATE FULLTEXT INDEX, ALTER FULLTEXT INDEX e DROP FULLTEXT INDEX. |
Sintassi
sp_fulltext_table
[ @tabname= ] 'qualified_table_name'
, [ @action= ] 'action'
[
, [ @ftcat= ] 'fulltext_catalog_name'
, [ @keyname= ] 'unique_index_name'
]
Argomenti
[ @tabname=] 'qualified_table_name'
Nome della tabella composto da una o due parti. La tabella deve esistere nel database corrente. qualified_table_name è di tipo nvarchar(517) e non prevede alcun valore predefinito.[ @action=] 'action'
Azione che si desidera eseguire. action è di tipo nvarchar(50) e non prevede alcun valore predefinito. I possibili valori sono i seguenti.Valore
Descrizione
Create
Crea i metadati di un indice full-text per la tabella qualified_table_name e specifica che i dati dell'indice full-text per questa tabella vengano inseriti nel catalogo fulltext_catalog_name. Questa azione imposta inoltre l'utilizzo dell'indice unique_index_name come colonna chiave full-text. Questo indice univoco deve essere già presente e definito in una colonna della tabella.
Nella tabella sarà possibile eseguire una ricerca full-text solo dopo il popolamento del catalogo full-text.
Drop
Elimina i metadati dell'indice full-text per la tabella qualified_table_name. Se l'indice full-text è attivo, viene disattivato automaticamente prima dell'eliminazione. Non è necessario rimuovere le colonne prima di eliminare l'indice full-text.
Activate
Attiva la possibilità di raccogliere i dati dell'indice full-text per la tabella qualified_table_name. Per poter attivare un indice full-text, è necessario che l'indice includa almeno una colonna.
Un indice full-text viene attivato automaticamente per il popolamento non appena si aggiunge la prima colonna per l'indicizzazione. Se si elimina l'ultima colonna dell'indice, l'indice diventa inattivo. Se il rilevamento delle modifiche è attivato, l'attivazione di un indice non attivo comporta l'avvio di un nuovo processo di popolamento.
L'indice full-text in realtà non viene popolato, ma viene semplicemente registrata la tabella del catalogo full-text nel file system in modo che le righe della tabella qualified_table_name possano essere recuperate durante la successiva operazione di popolamento dell'indice full-text.
Deactivate
Disattiva l'indice full-text per la tabella qualified_table_name in modo che non sia possibile raccogliere i dati dell'indice per la tabella qualified_table_name. I metadati dell'indice full-text tuttavia vengono conservati e la tabella può essere riattivata.
Se il rilevamento delle modifiche è attivato, la disattivazione di un indice attivo comporta il blocco dello stato dell'indice, ovvero vengono arrestati i processi di popolamento in corso e la distribuzione delle modifiche nell'indice.
start_change_tracking
Avvia un popolamento incrementale dell'indice full-text. Se la tabella non include una colonna di tipo timestamp, viene avviato un popolamento completo dell'indice full-text e il rilevamento delle modifiche apportate alla tabella.
Il rilevamento delle modifiche full-text non tiene traccia delle operazioni WRITETEXT o UPDATETEXT eseguite su colonne indicizzate full-text di tipo image, text o ntext.
stop_change_tracking
Arresta il rilevamento delle modifiche apportate alla tabella.
update_index
Propaga nell'indice full-text il set di modifiche rilevate.
Start_background_updateindex
Avvia la propagazione delle modifiche rilevate nell'indice full-text.
Stop_background_updateindex
Arresta la propagazione delle modifiche rilevate nell'indice full-text.
start_full
Avvia un popolamento completo dell'indice full-text per la tabella.
start_incremental
Avvia un popolamento incrementale dell'indice full-text per la tabella.
Stop
Arresta un popolamento completo o incrementale.
[ @ftcat=] 'fulltext_catalog_name'
Nome di catalogo full-text esistente valido per un'azione create. Per tutte le altre azioni questo parametro deve essere NULL. fulltext_catalog_name è di tipo sysname e il valore predefinito è NULL.[ @keyname=] 'unique_index_name'
Indice univoco valido non Null, su una colonna a chiave singola, nella tabella qualified_table_name per un'azione create. Per tutte le altre azioni questo parametro deve essere NULL. unique_index_name è di tipo sysname e il valore predefinito è NULL.
Valori restituiti
0 (esito positivo) o 1 (esito negativo)
Set di risultati
Nessuno
Osservazioni
Dopo la disattivazione di un indice full-text per una determinata tabella, l'indice full-text esistente è disponibile fino al successivo popolamento completo. Questo indice tuttavia non viene utilizzato, in quanto le query sulle tabelle disattivate vengono bloccate da Microsoft SQL Server.
Se la tabella viene riattivata e l'indice non viene ripopolato, l'indice precedente rimane disponibile per le query nelle colonne full-text attivate rimanenti, escluse quelle nuove. I dati provenienti da colonne eliminate vengono recuperati nelle query che specificano una ricerca su tutte le colonne full-text.
Dopo avere definito una tabella per l'indicizzazione full-text, se si imposta un tipo di dati diverso nella colonna chiave univoca full-text tramite la modifica del tipo di dati della colonna o l'impostazione della chiave univoca full-text su un'altra colonna senza eseguire un popolamento completo, potrebbe verificarsi un errore durante le query successive. In questo caso viene visualizzato il messaggio di errore: "Impossibile eseguire la conversione al tipo data_type per il valore della chiave di ricerca full-text key_value." Per evitare che si verifichi questa situazione, eliminare la definizione full-text per la tabella tramite l'azione drop di sp_fulltext_table e ridefinirla tramite sp_fulltext_table e sp_fulltext_column.
Il valore massimo definito per le dimensioni della colonna chiave full-text deve essere 900 byte. È consigliabile che le dimensioni della colonna chiave siano ridotte al massimo per motivi di prestazioni.
Autorizzazioni
Solo i membri del ruolo predefinito del server sysadmin e dei ruoli predefiniti del database db_owner e db_ddladmin, oppure un utente con autorizzazioni di riferimento sul catalogo full-text possono eseguire sp_fulltext_table.
Esempi
A. Abilitazione di una tabella per l'indicizzazione full-text
Nell'esempio seguente vengono creati i metadati di un indice full-text per la tabella Document del database AdventureWorks2008R2. Cat_Desc è un catalogo full-text. PK_Document_DocumentID è un indice univoco a colonna singola nella tabella Document.
USE AdventureWorks2008R2;
GO
EXEC sp_fulltext_table 'Production.Document', 'create', 'Cat_Desc', 'PK_Document_DocumentID';
--Add some columns
EXEC sp_fulltext_column 'Production.Document','DocumentSummary','add';
-- Activate the full-text index
EXEC sp_fulltext_table 'Production.Document','activate';
GO
B. Attivazione e propagazione delle modifiche rilevate
Nell'esempio seguente viene attivata e avviata la propagazione delle modifiche rilevate nell'indice full-text, man mano che si verificano.
USE AdventureWorks2008R2;
GO
EXEC sp_fulltext_table 'Production.Document', 'Start_change_tracking';
EXEC sp_fulltext_table 'Production.Document', 'Start_background_updateindex';
GO
C. Rimozione di un indice full-text
In questo esempio vengono rimossi i metadati di un indice full-text per la tabella Document del database AdventureWorks2008R2.
USE AdventureWorks2008R2;
GO
EXEC sp_fulltext_table 'Production.Document', 'drop';
GO