2011-10-11 38 views
1

我測試過這一點,我可以看到的是可能有多個來自多個應用程序(或相同應用程序的相同許多情況下),以同樣的開OleDbConnection小號Access數據庫,甚至有很多OleDbDataReader同時打開。讀取和和單一MS Access數據庫的同時從許多應用程序中編寫

但是,這是安全的?我應該採取任何特殊照顧或將Jet引擎照顧一切?如果我在同時寫入同一個表的同時讀取一個數據表會發生什麼?

我只是不想以後在陷阱或意外跌倒。

回答

2

訪問一般不會併發數據活動的引擎。爲什麼要避免MySQL或Oracle或其他適當的RDBMS?

某些原因:

- 您無法保證讀取一致視圖。
- 您可以在不知情的情況下更新更新記錄。
- 你可能會遇到無法解決的鎖
- 你有沒有集中事務管理

1

訪問不是設計用來併發使用。您應該使用不同的數據庫進行調查。 Here's關於這個問題的優秀文章。

0

要直接針對您的問題What would happen if I'm reading one data table while writing to the same table at the same time?

取決於默認IsolationLevel。您可以閱讀關於什麼隔離級別以及如何在Protecting Your Data Integrity with Transactions in ADO.Net上指定它們。

但正如其他建議,請使用別的東西。 SQL Server 2008 Express功能齊全,大多免費。如果您仍然希望能夠在不安裝服務器軟件的情況下使用數據庫,我甚至會建議通過Access訪問SQL Server Compact Edition

0

我的個人的經驗是,爲5至10個用戶(每一個與1個連接)與「不更多的數據,用戶可以通過輸入一些輸入到表單中輸入」,在本地網絡中所使用的,接入是確定作爲後端。這篇文章反映了我個人的經驗:

http://www.tek-tips.com/faqs.cfm?fid=4462

真正的限制和地步,你應該尋找一個「真實」的Client/Server數據庫在很大程度上取決於你的環境的細節 - 如果你想知道,你將不得不運行你自己的基準。

關於併發讀取/寫入表:Access使用底層文件系統的字節範圍鎖定功能來處理衝突(有關更多信息,請參閱此處http://en.wikipedia.org/wiki/File_locking)。該機制適用於大多數現代文件系統(如NTFS),但對很多用戶無法很好地擴展。

相關問題