Condividi tramite


sp_fulltext_table (Transact-SQL)

Contrassegna una tabella per l'indicizzazione full-text oppure elimina tale contrassegno.

Nota importanteImportante

Questa caratteristica verrà rimossa a partire da 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 CREATE FULLTEXT INDEX, ALTER FULLTEXT INDEX e DROP FULLTEXT INDEX.

Icona di collegamento a un argomentoConvenzioni 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 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 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.

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 MicrosoftSQL 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 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