ALTER FULLTEXT INDEX (Transact-SQL)

Data aggiornamento: 12 dicembre 2006

Modifica le proprietà di un indice full-text.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

ALTER FULLTEXT INDEX ON table_name
   { ENABLE 
   | DISABLE
   | SET CHANGE_TRACKING { MANUAL | AUTO | OFF }
   | ADD ( column_name 
     [ TYPE COLUMN type_column_name ] 
     [ LANGUAGE language_term ] [,...n] )
     [ WITH NO POPULATION ]
   | DROP ( column_name [,...n] )
     [WITH NO POPULATION ] 
   | START { FULL | INCREMENTAL | UPDATE } POPULATION
   | { STOP | PAUSE | RESUME } POPULATION 
   }

Argomenti

  • table_name
    Nome della tabella che contiene la colonna o le colonne incluse nell'indice full-text. I nomi dei proprietari del database e della tabella sono facoltativi.
  • ENABLE | DISABLE
    Indica a Microsoft SQL Server se raccogliere i dati dell'indice full-text per table_name. ENABLE attiva l'indice full-text, DISABLE disattiva l'indice full-text.

    Quando l'indice full-text è disattivato, i relativi metadati vengono mantenuti nelle tabelle di sistema. Se l'opzione CHANGE_TRACKING è attivata (aggiornamento manuale o automatico) quando l'indice full-text è disattivato, l'indice viene bloccato, eventuali ricerche per indicizzazione in corso vengono interrotte e le nuove modifiche apportate ai dati della tabella non vengono registrate o propagate nell'indice. L'indice full-text su table_name può essere riattivato con ENABLE.

  • SET CHANGE_TRACKING {MANUAL | AUTO | OFF}
    Indica se SQL Server deve mantenere un elenco di tutte le modifiche apportate ai dati indicizzati nel catalogo full-text. Le modifiche apportate ai dati tramite WRITETEXT e UPDATETEXT non vengono riportate nell'indice full-text e pertanto non vengono registrate dalla funzione di rilevamento delle modifiche.

    Per modificare lo stato CHANGE_TRACKING di un indice full-text, è necessario che il FILEGROUP contenente la tabella con indicizzazione full-text non sia impostato su OFFLINE o READONLY. In caso contrario, il comando ha esito negativo e SQL Server restituisce un errore.

  • MANUAL
    Specifica che il log di rilevamento delle modifiche verrà propagato in base a una pianificazione tramite SQL Server Agent oppure manualmente dall'utente.
  • AUTO
    Specifica che SQL Server aggiornerà automaticamente l'indice full-text quando vengono modificati i dati nelle tabelle associate. AUTO è l'opzione predefinita.
  • OFF
    Specifica che SQL Server non manterrà un elenco delle modifiche apportate ai dati indicizzati.
  • ADD | DROP column_name
    Specifica le colonne da aggiungere o eliminare in un indice full-text. Le colonne specificate devono essere di tipo char, varchar, nchar, nvarchar, text, ntext, image, xml o varbinary(max).

    Utilizzare la clausola DROP solo per colonne abilitate in precedenza per l'indicizzazione full-text.

    Utilizzare TYPE COLUMN e LANGUAGE con la clausola ADD per impostare queste proprietà sul valore di column_name. Se si aggiunge una colonna, è necessario ripopolare l'indice full-text della tabella per consentire il corretto funzionamento delle query full-text su tale colonna.

    A meno che non si specifichi WITH NO POPULATION, SQL Server avvia automaticamente un popolamento completo dopo l'aggiunta o l'eliminazione di una colonna in un indice full-text.

  • TYPE COLUMN type_column_name
    Nome della colonna in table_name contenente il tipo di documento di column_name. Specificare type_column_name solo se le colonne specificate in column_name sono di tipo varbinary(max) o image.

    Il tipo di dati delle colonne specificate per TYPE COLUMN deve essere char, nchar, varchar o nvarchar. Per ulteriori informazioni sui formati di file supportati dalla funzionalità full-text e sui dati di indicizzazione archiviati in colonne varbinary(max), vedere Filtri di ricerca full-text.

  • LANGUAGE language_term
    Lingua dei dati archiviati in column_name.

    language_term è facoltativo ed è possibile specificare un valore stringa, un valore integer o un valore esadecimale corrispondente all'identificatore delle impostazioni internazionali (LCID) di una lingua. Se si specifica language_term, la lingua rappresentata dall'argomento verrà applicata a tutti gli elementi della condizione di ricerca. Se non viene specificato alcun valore, verrà utilizzata la lingua predefinita della funzionalità full-text per l'istanza di SQL Server.

    Utilizzare la stored procedure sp_configure per recuperare informazioni sulla lingua predefinita della funzionalità full-text per l'istanza di SQL Server. Per ulteriori informazioni, vedere Opzione default full-text language.

    Se l'argomento language_term viene specificato come stringa, corrisponde al valore della colonna alias nella tabella di sistema syslanguages. La stringa deve essere racchiusa tra virgolette singole, come in 'language_term'. Se l'argomento language_term viene specificato come valore integer, corrisponde all'LCID effettivo che identifica la lingua. Se si specifica un valore esadecimale, language_term è 0x seguito dal valore esadecimale di LCID. Il valore esadecimale deve essere composto al massimo da otto cifre, zero iniziali inclusi.

    Se il valore è in formato DBCS (Double-Byte Character Set), SQL Server lo convertirà in Unicode.

    Le risorse, come word breaker e stemmer, devono essere abilitate per la lingua specificata in language_term. Se tali risorse non supportano la lingua specificata, SQL Server restituirà un errore.

    Utilizzare la risorsa per la lingua neutra (0x0) per le colonne non BLOB e non XML che contengono dati di testo in più lingue oppure nei casi in cui la lingua del testo archiviato nella colonna è sconosciuta. Per i documenti archiviati in colonne di tipo XML o BLOB, in fase di indicizzazione verrà utilizzata la codifica di lingua del documento. Ad esempio, per le colonne XML la lingua sarà identificata tramite l'attributo xml:lang nei documenti XML. In fase di query, il valore precedentemente specificato in language_term diventa la lingua predefinita per le query full-text, a meno che non si specifichi language_term all'interno di una query full-text.

  • [ ,...n]
    Indica la possibilità di specificare più colonne nelle clausole ADD o DROP. Se si specificano più colonne, utilizzare la virgola come separatore.
  • WITH NO POPULATION
    Specifica che l'indice full-text non verrà popolato dopo l'operazione ADD o DROP per le colonne. L'indice verrà popolato solo se si esegue un comando START...POPULATION.

    Se l'opzione CHANGE_TRACKING è attivata e si specifica WITH NO POPULATION, SQL Server restituisce un errore. Se l'opzione CHANGE_TRACKING è attivata e non si specifica WITH NO POPULATION, SQL Server esegue un popolamento completo dell'indice dopo la creazione.

    È possibile utilizzare l'opzione NO POPULATION solo quando CHANGE_TRACKING è OFF. Se si specifica NO POPULATION, SQL Server non popola un indice dopo la creazione. L'indice viene popolato solo quando si esegue un comando ALTER FULLTEXT INDEX...START POPULATION. Se non si specifica NO POPULATION, SQL Server popola l'indice dopo la creazione.

  • START {FULL|INCREMENTAL|UPDATE} POPULATION
    Indica a SQL Server di avviare il popolamento dell'indice full-text per table_name. Se il popolamento dell'indice full-text è già in corso, SQL Server restituisce un avviso senza avviare un nuovo popolamento.
    • FULL
      Specifica che devono essere recuperate tutte le righe della tabella per l'indicizzazione full-text, anche se le righe sono già state indicizzate.
    • INCREMENTAL
      Specifica che per l'indicizzazione full-text devono essere recuperate solo le righe modificate dopo l'ultimo popolamento. È possibile applicare INCREMENTAL solo se la tabella include una colonna di tipo timestamp. Se una tabella nel catalogo full-text non include una colonna di tipo timestamp, per la tabella viene eseguito un popolamento FULL.
    • UPDATE
      Specifica che devono essere elaborate tutte le operazioni di inserimento, aggiornamento o eliminazione eseguite dopo l'ultimo aggiornamento dell'indice con rilevamento delle modifiche. È necessario che il popolamento con rilevamento delle modifiche sia abilitato per una tabella, ma l'indice ad aggiornamento in background o il rilevamento automatico delle modifiche non deve essere attivato.
  • {STOP | PAUSE | RESUME } POPULATION
    Interrompe o sospende qualsiasi popolamento in corso oppure interrompe o riprende qualsiasi popolamento sospeso.

    STOP POPULATION non interrompe il rilevamento automatico delle modifiche o l'indice ad aggiornamento in background. Per interrompere il rilevamento delle modifiche, utilizzare SET CHANGE_TRACKING OFF.

    PAUSE POPULATION e RESUME POPULATION possono essere utilizzati soltanto per popolamenti completi. Non sono rilevanti per altri tipi di popolamento poiché le ricerche per indicizzazione vengono riprese negli altri popolamenti dal punto in cui sono state interrotte.

Osservazioni

Se vengono indicizzate istanze di dati di tipo xml per la ricerca full-text, i nomi di elementi e attributi non vengono indicizzati e non possono essere utilizzati per le query. È comunque possibile indicizzare i valori degli elementi e utilizzarli per le query in ogni istanza. Sono supportati documenti e frammenti XML ben formati contenenti più lingue.

Autorizzazioni

L'utente deve disporre dell'autorizzazione ALTER per la tabella o la vista oppure essere un membro del ruolo predefinito del server sysadmin o dei ruoli predefiniti del database db_ddladmin o db_owner.

Esempi

Nell'esempio seguente viene modificato l'indice full-text nella tabella JobCandidate del database AdventureWorks.

USE AdventureWorks;
GO
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate ENABLE;
GO

Vedere anche

Riferimento

CREATE FULLTEXT INDEX (Transact-SQL)
DROP FULLTEXT INDEX (Transact-SQL)

Altre risorse

Ricerca full-text

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

12 dicembre 2006

Nuovo contenuto:
  • Aggiunta delle opzioni PAUSE | RESUME POPULATION alla sintassi.