2010-01-20 133 views
2

我試圖對SQL Server 2005運行一個SQL腳本作爲我的集成測試的一部分。如果我在SQL Server Management Studio中執行它,腳本工作得很好。但是,程序執行時,使全文搜索腳本的這部分拒絕工作:這個SQL腳本爲什麼失敗?

-- 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 

我得到的錯誤是:

Incorrect syntax near 'enable'.

如果我刪除有關全文行,一切正常。如果我改變sp_fulltext_database enable調用此:

EXEC ('sp_fulltext_database enable'); 

我得到一個不同的錯誤:

Cannot use full-text search in master, tempdb, or 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(); 
    } 
} 

誰能告訴我什麼,我需要做的就是這個工作?

感謝,
肯特

回答

3
sp_fulltext_database 'enable' 

這是一個字符串參數,而不是保留字。

編輯:肯特:我標記爲給予Quassnoi代表的答案。但要詳細說明,如果我將我的USE database聲明添加到我的腳本的頂部,它就可以工作。由於我不明白的原因,當我在同一個會話中執行USE database作爲單獨的聲明時,它不起作用(請參閱我的原始代碼)。

+0

沒有 - 同樣的問題。不能在master,tempdb或model數據庫中使用全文搜索。 – 2010-01-20 12:26:23

+0

然後你使用'master','tempdb'或'model'。您能否在SSMS中運行腳本(確保在左上角的組合框中選擇了正確的數據庫)並檢查問題是否存在? – Quassnoi 2010-01-20 12:34:49

+0

Cheers Quassnoi - 那讓我瘋狂。 – 2010-01-20 12:38:11