sp_fulltext_table (Transact-SQL)
Contrassegna una tabella per l'indicizzazione full-text oppure elimina tale contrassegno.
Importante: |
---|
Questa funzionalità verrà rimossa in una delle prossime versioni di Microsoft SQL Server. Evitare di utilizzare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. Utilizzare in alternativa le nuove istruzioni DDL (Data Definition Language) full-text. Per ulteriori informazioni, vedere gli argomenti CREATE, ALTER e DROP FULLTEXT INDEX. |
Convenzioni della sintassi Transact-SQL
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 varchar(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 interrotti 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 |
Interrompe 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 |
Interrompe 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 |
Interrompe 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.
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.
Valori restituiti
0 (esito positivo) o 1 (esito negativo)
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 AdventureWorks
. Cat_Desc
è un catalogo full-text. PK_Document_DocumentID
è un indice univoco a colonna singola nella tabella Document
.
USE AdventureWorks;
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 AdventureWorks;
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 AdventureWorks
.
USE AdventureWorks;
GO
EXEC sp_fulltext_table 'Production.Document', 'drop';
GO
Vedere anche
Riferimento
INDEXPROPERTY (Transact-SQL)
OBJECTPROPERTY (Transact-SQL)
sp_help_fulltext_tables (Transact-SQL)
sp_help_fulltext_tables_cursor (Transact-SQL)
sp_helpindex (Transact-SQL)
Stored procedure di sistema (Transact-SQL)
Stored procedure per ricerche full-text (Transact-SQL)