2009-12-08 75 views
0

我已經在VB.NET中編寫了一個程序,此程序所做的其中一件事是將記錄插入到Microsoft Access數據庫中。我的程序訪問數據庫的後端被寫爲可互換層。如果我將此層與使用Microsoft SQL Server數據庫的圖層「交換」,我的程序會飛行。如果我使用MS Access,它仍然很快,但速度要慢得多。有沒有人有任何提示或提示如何加快使用Microsoft Access的ADO.NET交易?我真的更願意使用SQL Server上的MS Access,以便我可以使用我的程序分發我的數據庫(而不是連接到某個遠程SQL Server)。有什麼建議麼?另外,當我創建MS Access數據庫時,我使用Access 2000兼容模式創建了它。使用2003兼容模式會更快嗎?ADO.NET數據庫訪問

在此先感謝

+0

你有沒有考慮過使用ADO/OLEDB通過COM而不是ADO.NET? – 2009-12-08 22:54:17

回答

1

訪問,如您遇到,達不到最佳。

你已經採取了看看SQL Server Compact Edition。它可以嵌入您的應用程序並與其分發...並且應該比Access更好地執行。

+0

是的,唯一的一點是,從我聽說的是,它不支持存儲過程,我有很多,這將是一個麻煩轉換。 – Icemanind 2009-12-08 04:54:35

+0

訪問不如最優? – 2009-12-08 06:41:29

+0

嗯,Access是否支持存儲過程? – 2009-12-08 06:55:16

0

SQL Server Compact 3.5會給你同樣的好處 - 一個單獨的數據庫文件,你可以部署和分發(只要你包含運行時程序集)。 與完整的SQL Server實例相比,它具有減少的查詢功能,但速度肯定比Access引擎快。

我已經與具有桌面組件移動應用中使用它,它沒有我需要它做的一切。

+0

是的,唯一的一點是,從我聽說的是,它不支持存儲過程,我有很多,這將是一個麻煩轉換。 – Icemanind 2009-12-08 04:55:06

+0

是的,事實並非如此。如果你只有簡單的連接和查詢,我不會推薦它。 – cdonner 2009-12-08 05:00:17

+0

SQL Server Compact和Access/Jet數據庫文件之間是否有一些明確的速度測試比較? – 2009-12-08 06:40:16

0

您是否也同時在Access中打開Access後端?如果是這樣,請嘗試您的程序而不要打開它。如果能夠加快速度,那麼你應該打開一個數據庫連接或一個記錄集(針對一個記錄很少的表),並在處理數據時保持打開狀態。

的問題是,如果對Access數據庫文件,別人打開和關閉對象或記錄集是在Access數據庫文件,李連杰浪費了大量針對LDB文件時間做鎖。所以保持與Access數據庫文件的永久連接解決了這個問題。

2

雖然你需要安裝它時,SQL Server Express支持「的XCopy文件部署」,所有你需要做的部署應用程序是一個出貨.mdf文件和你的可執行文件。

詳情here MSDN上。

這不支持存儲過程:我已經用它在我們的單元測試動態動態創建一個嘲笑出數據庫。

0

以我的經驗,ADO.NET沒有太多針對MS Access的優化。使用較舊的ADO或DAO接口(通過COM在VB.NET中可用)可以使性能在某些情況下提高20倍或更多。但是,這一切都取決於程序真正執行的SQL語句(大量批量更新/插入,或大量結果集的大量查詢或大量交互式LOAD變換存儲週期)。

0

的MSDN展示瞭如何加快ADO.NET的文章:http://msdn.microsoft.com/en-us/library/ms998569.aspx 儘管文章是有點塵土飛揚,但它仍然使一些好點:)

除此之外,使用MS訪問自己,我發現一些技巧,比如緩存數據,選擇沒有源方案或優化查詢,都適合將性能保持在中等水平。