2009-09-20 13 views
2

Je construis un programme d'installation en utilisant WiX (pas de mot clé puisque WiX n'est pas le problème ici) qui créera un index fulltext pour SQL Server Express 2005 Advanced Base de données de services.Créer un catalogue fulltext dans une seule ligne de SQL (à partir d'un programme d'installation)

Jusqu'à maintenant, j'utiliser le SQL

CREATE FULLTEXT CATALOG Foobar in path 'c:\Whereever' 

Maintenant, le programme d'installation ne supprime pas la base de données lors de la désinstallation car il peut contenir des données utilisateur précieux. Maintenant, lorsque je mettrai à jour le logiciel, il tombera sur la création de l'index de texte intégral déjà existant. (Abandonner dans le programme d'installation, car il ne peut pas exécuter cette ligne de SQL)

Ce que je veux faire est d'exécuter la ligne conditionnellement si l'index de texte intégral n'existe pas déjà. J'attends quelque chose comme

IF NOT EXISTS(SELECT * from sys.??????? WHERE name = 'Foobar') 
    CREATE FULLTEXT CATALOG Foobar in path 'c:\Whereever' 

(je viens de voir quelque chose de semblable à ce que je dois here on stackoverflow)

Mais où (et comment) puis-je savoir si l'indice est enregistré dans un tableau sys (et quelle table est-il?)

Répondre

4

sys.fulltext_catalogs

IF EXISTS (SELECT 1 FROM sys.fulltext_catalogs 
      WHERE name = 'foobar') .... 
+0

Merci. Parfois, les choses sont plus simples que je ne le pense :-) – froh42

Questions connexes