我正在尝试针对SQL Server 2005运行SQL脚本,作为我的集成测试设置的一部分。如果我从SQL Server Management Studio中执行它,该脚本可以正常工作。但是,在以编程方式执行时,启用全文搜索的脚本的这一部分拒绝工作:
-- 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
我得到的错误是:
'enable'附近的语法不正确。
如果我删除与全文相关的行,一切正常。如果我将sp_fulltext_database enable
调用更改为:
EXEC ('sp_fulltext_database enable');
我得到了一个不同的错误:
无法在master中使用全文搜索, tempdb或model database。
这对我来说毫无意义。正在使用正确的数据库 。
作为参考,执行脚本的代码如下所示(我正在使用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();
}
}
有谁能告诉我我需要做些什么才能让它发挥作用?
谢谢,
肯特
答案 0 :(得分:3)
sp_fulltext_database 'enable'
这是一个字符串参数,而不是保留字。
编辑KENT:我标记为给Quassnoi代表的答案。但是要详细说明,如果我将USE database
语句添加到我的脚本顶部,它就可以了。由于我不理解的原因,当我在同一会话中执行USE database
作为单独的语句时,它不起作用(参见我的原始代码)。