2009-02-18 57 views
4

我試圖做一個巨大的批量插入到數據庫SQLCE(版本3.5,哦,用C#3)。我已經嘗試過這樣做的各種方式(表適配器插入,準備好的參數化查詢,sqlceresultset插入等)。正如我在許多網站上閱讀的那樣,最快的時間是以表格直接模式使用SqlCeResultSet對象。如何通過SqlCeCommand對象禁用SQL Server精簡版中的所有表索引?

我要加快這進一步做插入前禁止所有的必要表的索引(當時我後來重建它們)。我遇到了讓ALTER INDEX語句正常工作的問題(之前從未使用過,因此我確定我忽略了簡單的事情)。

基本上我已經創建了一個SqlCeCommandObject,並設立ALTER語句以下列方式(Connection對象已經建立並開放等):

. 
. 
. 
SqlCeCommand disableIndexCommand = Connection.CreateCommand(); 
disableIndexCommand.CommandText = "ALTER INDEX ALL ON ItemMaster DISABLE"; 
disableIndexCommand.ExecuteNonQuery(); 
. 
. 
. 

當我嘗試運行這段代碼我得到以下錯誤:

There was an error parsing the query. [ Token line number = 1, Token line offset = 7, Token in error = INDEX ]

這聽起來像它是不理解在alter語句中的INDEX關鍵字。 SqlCe中不支持這個嗎?

感謝

[更新] - 我已經嘗試過其他的DDL語句(如DROP INDEX,CREATE INDEX),我似乎無法得到其中的任何工作?至於DDL語句,我一直在搜索各處,試圖找到SSCE中不支持的內容和內容的列表。沒有運氣。有沒有人知道這方面的好資源。在SQLCE緊湊型3.5 MS文檔已經相當沒用,我必須說...

回答

5

上SqlServerCe的DROP INDEX語法是:

DROP INDEX [TableName].IndexName 

有一個在SqlServerCe沒有ALTER INDEX語法,所以當它說「INDEX」中的「錯誤解析」,因爲它尋找「TABLE」,這是ALTER在SqlServerCe中唯一有效的東西。

編輯:至於文件,我發現的最佳方法是下載Books Online。如果您未使用3.5 SP1,請查看here以獲取更完整的可用下載列表。

+0

感謝。其實我今天早上遇到聯機叢書的東西,意識到我必須刪除索引並重新創建它們(或只是不創造他們開始和批量加載後創建它們)。 – 2009-02-19 14:38:39