2011-03-15 86 views
0

我以前曾見過此問題,但無法找到什麼是/不可能的清楚解釋以及migth可用的解決方法。SQL CE通過網絡共享

我有一個現有的C#應用​​程序使用SQL CE來存儲本地信息。此數據庫只能由單個應用程序訪問並存儲在用戶的應用程序數據文件夾中。

某些環境會將appdata文件夾重定向到導致SQL CE引發異常的網絡共享:「內部錯誤:無法打開共享內存區域」。

我讀過SQL CE 3.5 SP2應該允許再次連接到網絡共享,並且該SP1沒有,但是我一直無法讓它工作。有沒有人獲得任何版本的SQL CE來通過網絡共享工作?如果是這樣,你用什麼版本/代碼來使它起作用?

我已經嘗試使用mode =獨佔連接字符串中沒有運氣。

或者,有人找到了不同的解決方法?數據需要存儲在用戶的配置文件中,因爲它是每個用戶特有的,不應該由系統上的任何其他用戶訪問。

回答

1

我更新爲使用SQL Express與工作本地用戶情況下的應用,但它爲我們的客戶創造了太多的部署問題。當我們查看不同的數據庫選項時,我最終不得不編寫一個圖層來使用Access MDB。

我的寫作桌面應用程序的建議是不要使用SQL Express或SQL CE進行本地存儲。

0

將數據存儲在未重定向的文件夾中。

+0

我不確定是否有任何方法可以確保我寫入的內容沒有重定向。用戶的文件夾被重定向,無法存儲每個用戶的數據。 – Steven 2011-03-15 07:49:19

+0

在我的Win7 PC上的appdata文件夾中,查看Local,LocalLOw和Roaming文件夾 - 我確定它們並不是全部重定向的。 – ErikEJ 2011-03-15 13:15:56

+0

Windows XP沒有本地/漫遊等,它有一個重定向的Application Data文件夾。 – Steven 2011-03-15 13:55:27

0

SQL Compact是一種單用戶,進程數據庫引擎..

你試圖把SQLCE DB上sharedfolder並設置它的數據源,其中它的位置。?

喜歡的東西:

   "Data Source=\\MySharedfolder\\DB.sdf;Persist Security Info=False;" 

問候

+0

SQL Express不是一個選項。該應用程序需要每個登錄用戶的數據庫。最終用戶無法在服務器上安裝SQL Express。一切都必須在用戶的機器上運行。我看不出SQL Express如何在這裏。另外,如前所述,數據庫存儲在用戶的appdata文件夾中,該文件夾被靜默地重定向到網絡共享。 – Steven 2011-03-15 07:43:15

0

我已經在網絡驅動器上成功地使用了SQL CE 3.5,並且在兩臺聯網的計算機上同時運行應用程序的實例。我能夠從兩個位置更新數據庫中的記錄。

我不確定如果兩個用戶同時訪問同一條記錄會發生什麼情況,但是在我的情況下這不太可能。只需在連接字符串中包含數據庫位置即可。