sp_fulltext_table (Transact-SQL)

Si applica a:SQL ServerAzure Synapse Analytics

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

Importante

Questa funzionalità verrà rimossa nelle versioni future di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. Usare invece CREATE FULLTEXT INDEX, ALTER FULLTEXT INDEX e DROP FULLTEXT INDEX .

Convenzioni di sintassi Transact-SQL

Sintassi

sp_fulltext_table
    [ @tabname = ] N'tabname'
    , [ @action = ] 'action'
    [ , [ @ftcat = ] N'ftcat' ]
    [ , [ @keyname = ] N'keyname' ]
[ ; ]

Argomenti

[ @tabname = ] N'tabname'

Nome di tabella in una o due parti. La tabella deve esistere nel database corrente @tabname è nvarchar(517), senza impostazione predefinita.

[ @action = ] 'action'

Azione da eseguire. @action è nvarchar(50), senza impostazione predefinita e può essere uno di questi valori.

Valore Descrizione
Crea Crea i metadati per un indice full-text per la tabella a cui fa riferimento @tabname e specifica che i dati dell'indice full-text per questa tabella devono risiedere in @ftcat. Questa azione definisce anche l'uso di @keyname come colonna chiave full-text. Questo indice univoco deve essere già presente e definito in una colonna della tabella.

Non è possibile eseguire una ricerca full-text in questa tabella fino a quando non viene popolato il catalogo full-text.
Drop Elimina i metadati nell'indice full-text per @tabname. Se l'indice full-text è attivo, viene disattivato automaticamente prima di essere eliminato. Non è necessario rimuovere colonne prima di eliminare l'indice full-text.
Attiva Attiva la possibilità di raccogliere i dati dell'indice full-text per @tabname, dopo la disattivazione. 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.

Ciò non popola effettivamente l'indice full-text, ma registra semplicemente la tabella nel catalogo full-text nel file system in modo che le righe di @tabname possano essere recuperate durante il popolamento dell'indice full-text successivo.
Deactivate Disattiva l'indice full-text per @tabname in modo che i dati dell'indice full-text non possano più essere raccolti per il @tabname. 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 ha un timestamp, avviare 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 = ] N'ftcat'

Nome di catalogo full-text valido esistente per un'azione di creazione . Per tutte le altre azioni questo parametro deve essere NULL. @ftcat è sysname, con un valore predefinito .NULL

[ @keyname = ] N'keyname'

Indice univoco univoco a chiave singola valido in @tabname per un'azione di creazione . Per tutte le altre azioni questo parametro deve essere NULL. @keyname è sysname, con un valore predefinito .NULL

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Set di risultati

Nessuno.

Osservazioni:

Dopo la disattivazione di un indice full-text per una determinata tabella, l'indice full-text esistente rimane attivo fino al popolamento completo successivo; Tuttavia, questo indice non viene usato perché SQL Server blocca le query sulle tabelle disattivate.

Se la tabella viene riattivata e l'indice non viene ripopolato, l'indice precedente è ancora disponibile per le query su eventuali colonne rimanenti, ma non nuove e abilitate per il full-text. I dati provenienti da colonne eliminate vengono recuperati nelle query che specificano una ricerca su tutte le colonne full-text.

Dopo che una tabella è stata definita per l'indicizzazione full-text, il passaggio della colonna chiave univoca full-text da un tipo di dati a un altro, modificando il tipo di dati di tale colonna o modificando la chiave univoca full-text da una colonna a un'altra, senza un ripopolamento completo può causare un errore durante una query successiva e restituendo il messaggio di errore:

Conversione nel tipo data_type non riuscita per key_value valore della chiave di ricerca full-text.

Per evitare questo errore, eliminare la definizione full-text per questa tabella usando l'azione drop di sp_fulltext_table e ridefinirla usando 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 il più piccole possibile per motivi di prestazioni.

Autorizzazioni

Solo i membri del ruolo predefinito del server sysadmin , db_owner e db_ddladmin ruoli predefiniti del database oppure un utente con autorizzazioni di riferimento per il catalogo full-text può eseguire sp_fulltext_table.

Esempi

R. Abilitare 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 AdventureWorks2022;
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. Attivare e propagare le modifiche di rilevamento

Nell'esempio seguente viene attivata e avviata la propagazione delle modifiche rilevate nell'indice full-text, man mano che si verificano.

USE AdventureWorks2022;
GO
EXEC sp_fulltext_table 'Production.Document', 'Start_change_tracking';
EXEC sp_fulltext_table 'Production.Document', 'Start_background_updateindex';
GO

C. Rimuovere un indice full-text

In questo esempio vengono rimossi i metadati di un indice full-text per la tabella Document del database AdventureWorks.

USE AdventureWorks2022;
GO
EXEC sp_fulltext_table 'Production.Document', 'drop';
GO