2013-01-10 25 views
4

我正嘗試在SQL Server 2008 R2和Orchard CMS中使用多租戶配置部署全文搜索解決方案。每個租戶都有自己的數據庫。我們正在使用自動數據遷移來管理數據庫模式更改。我想創建一個使用遷移的全文目錄和索引。不過,我得到以下錯誤:如何從.NET應用程序創建全文搜索索引或目錄?

CREATE FULLTEXT CATALOG statement cannot be used inside a user transaction.

我知道錯誤的原因,但我不能確定一個解決方法。我試圖在應用程序中使用System.Data.SqlClient.SqlConnection類打開一個新的數據庫連接,並以某種方式將其配置爲不創建事務,但是這並沒有實現任何功能。

是否可以通過.NET提供程序創建全文索引/目錄,而不是通過SSMS直接連接到數據庫?

編輯:

我試過這個代碼與SMO:

var server = new Server(new ServerConnection(new SqlConnection(connectionString))); 

var database = server.Databases[databaseName]; 

var fulltextCatalog = new FullTextCatalog(database, fullTextCatalogName); 
fulltextCatalog.Create(); 

它導致與同一異常。

+0

您的數據庫用戶可以執行其他DDL操作而不會出現任何錯誤消息嗎? – Agilox

+0

是的,只有兩個不起作用的語句是「創建全文目錄」和「創建全文索引」。 – Wojteq

+0

@Wojteq - 出現什麼錯誤?您可能沒有安裝全文搜索。你安裝了什麼版本的SQL Server 2008?運行'SELECT FULLTEXTSERVICEPROPERTY('IsFullTextInstalled')',如果你看到'0'結果,你沒有安裝它。請參閱http://stackoverflow.com/questions/6511167/full-text-search-installed-or-not – Omar

回答

0

用戶必須對數據庫具有CREATE FULLTEXT CATALOG權限,或者是db_owner或db_ddladmin固定數據庫角色的成員。

+0

這不是問題。用戶是db_owner。 – Wojteq

+0

您是否啓用了全文搜索。例如:你試過了嗎? exec sp_fulltext_database'enable' – Agilox

+0

是的,它已啓用。我可以用SSMS來完成,但不能從應用程序中完成。 – Wojteq

0

您可以create and manage full-text indexes - 以及幾乎任何其他SQL Server對象 - 使用SMO

+0

它不能解決問題。你能看看我編輯的問題嗎? – Wojteq

+0

您發佈了一些代碼,並且我認爲這個評論意味着它沒有工作,但是您沒有解釋爲什麼不這樣做:您是否遇到錯誤,沒有發生任何事情,做過意想不到的事情......?我想你是在文檔中的[示例](http://msdn.microsoft.com/en-us/library/ms162152(v = sql.100).aspx)? – Pondlife

+0

我得到了與以下嵌套異常相同的錯誤「執行」FullTextCatalog'Test_Catalog'創建失敗時發生異常。「 - >」Transact-SQL語句或批處理「 - >」CREATE FULLTEXT CATALOG語句不能在用戶內部使用交易「。 – Wojteq

相關問題