sp_fulltext_table (Transact-SQL)
Si applica a: SQL Server Azure 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 relative alla 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 aver definito una tabella 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 potrebbe 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