J'essaie d'exécuter un script SQL sur SQL Server 2005 dans le cadre de la configuration de mes tests d'intégration. Le script fonctionne parfaitement bien si je l'exécute depuis SQL Server Management Studio. Cependant, lors de l'exécution par programme, cette partie du script qui permet la recherche de texte intégral refuse de travailler:Pourquoi ce script SQL échoue-t-il?
-- lots of tables and indexes created above
create unique nonclustered index [IX_Id] on [MyTable] ([Id] asc)
-- this line fails
sp_fulltext_database enable
create fulltext catalog MyCatalog with accent_sensitivity = off as default
create fulltext index on MyTable([Title],[Content]) key index IX_Id with change_tracking auto
L'erreur que je reçois est:
Incorrect syntax near 'enable'.
Si je supprime les lignes liées au texte intégral , tout fonctionne bien. Si je change l'appel sp_fulltext_database enable
à ceci:
EXEC ('sp_fulltext_database enable');
Je reçois une autre erreur:
Cannot use full-text search in master, tempdb, or model database.
Cela n'a aucun sens pour moi du tout. La base de données correcte est en cours d'utilisation.
Pour référence, le code qui exécute le script ressemble à ceci (j'utilise NHibernate):
private static void InitializeDatabase()
{
var sessionFactory = new NHibernate.Cfg.Configuration().Configure().BuildSessionFactory();
using (var session = sessionFactory.OpenSession())
{
session.CreateSQLQuery("IF DB_ID('" + databaseName + @"') IS NOT NULL DROP DATABASE """ + databaseName + @""";").ExecuteUpdate();
session.CreateSQLQuery(@"CREATE DATABASE """ + databaseName + @""";").ExecuteUpdate();
session.CreateSQLQuery(@"USE """ + databaseName + @""";").ExecuteUpdate();
session.CreateSQLQuery(GetCreationScript()).ExecuteUpdate();
}
}
Quelqu'un peut-il me dire ce que je dois faire pour que cela fonctionne?
Merci,
Kent
Non - même problème. Impossible d'utiliser la recherche en texte intégral dans la base de données master, tempdb ou model. –
Ensuite, vous utilisez 'master',' tempdb' ou 'model'. Pourriez-vous s'il vous plaît exécuter le script dans le 'SSMS' (en s'assurant que la bonne base de données est sélectionnée dans la zone de liste déroulante dans le coin supérieur gauche) et vérifier si le problème persiste? – Quassnoi
Salutations Quassnoi - ça me rendait fou. –