2009-06-23 8 views
14

Je suis en train de refactoriser une ancienne base de données et de supprimer des colonnes qui ne sont plus utilisées. La base de données étant utilisée pour l'indexation en texte intégral, certaines colonnes sont marquées pour le texte intégral.Erreur: Impossible de modifier ou de supprimer la colonne 'x' car elle est activée pour la recherche de texte intégral

Comment puis-je les supprimer?

Notes:

  • DB est MS SQL Server Express 2008
  • service de recherche de texte intégral est pas installé plus

Edit:
J'ai essayé

ALTER FULLTEXT INDEX ON tableName DROP (ColumnName) 

Mais obtient cette erreur:

Full-text crawl manager has not been initialized. Any crawl started before 
the crawl manager was fully initialized will need to be restarted. Please 
restart SQL Server and retry the command. You should also check the error 
log to fix any failures that might have caused the crawl manager to fail. 

Répondre

27

trouvé la solution moi-même:

-- You should call the DISABLE command 
ALTER FULLTEXT INDEX ON TableName DISABLE 
ALTER FULLTEXT INDEX ON TableName DROP (ColumnName) 
ALTER TABLE TableName DROP COLUMN ColumnName 
+0

Notez également que vous devez vraiment inclure le (et) dans la ligne 2, ou d'obtenir une erreur de syntaxe –

+2

et pour ajouter à nouveau l'index si vous êtes juste modifier la colonne: ALTER FULLTEXT INDEX sur TableName add (ColumnName) ALTER FULLTEXT INDEX sur TableName enable – David

7

Je sais que c'est un ancien poste, je me suis coincé, où je devais modifier une colonne dans le tableau plutôt que Code drop.below a fonctionné pour moi ...

EXEC sp_fulltext_column  //Drop your column from full text search here 
@tabname = '<table_name>' , 
@colname = '<column_name>' , 
@action = 'drop' 

ALTER TABLE ... //Alter your column here 

EXEC sp_fulltext_column  //Add your column back to full text search 
@tabname = '<table_name>' , 
@colname = '<column_name>' , 
@action = 'add' 
Questions connexes