SQL CE通过网络共享

时间:2011-03-15 04:41:24

标签: c# .net sql-server-ce

我之前已经看过这个问题,但无法找到明确解释什么是/不可能以及哪些变通办法可用。

我有一个现有的C#应用​​程序,它使用SQL CE来存储本地信息。该数据库仅由单个应用程序访问,并存储在用户的appdata文件夹中。

某些环境将appdata文件夹重定向到网络共享,导致SQL CE抛出异常:“内部错误:无法打开共享内存区域。”

我已经读过SQL CE 3.5 SP2应该允许再次连接到网络共享,而SP1没有,但是我无法让它工作。有没有人成功获得任何版本的SQL CE在网络共享上工作?如果是这样,您使用什么版本/代码来使其工作?

我尝试在连接字符串中使用mode = Exclusive而没有运气。

或者,有没有人找到不同的解决方法?数据需要存储在用户的配置文件中,因为它是特定于每个用户的,并且不应该被系统上的任何其他用户访问。

4 个答案:

答案 0 :(得分:2)

我更新了应用程序以使用SQL Express和本地用户实例,但是它为我们的客户创建了太多的部署问题。在我们查看不同的数据库选项时,我最终必须编写一个层来使用Access MDB。

我编写桌面应用程序的建议是不要使用SQL Express或SQL CE进行本地存储。

答案 1 :(得分:1)

我在网络驱动器上成功使用了SQL CE 3.5,并在两台联网计算机上同时运行应用程序实例。我能够从两个位置更新数据库中的记录。

我不确定如果两个用户同时访问同一条记录会发生什么,但在我的情况下这不太可能。只需在连接字符串中包含数据库位置。

答案 2 :(得分:0)

将数据存储在未重定向的文件夹中。

答案 3 :(得分:0)

SQL Compact是一个单用户进程内数据库引擎。

您是否尝试将sqlce DB放在共享文件夹上并将其数据源设置在它所在的位置?

类似的东西:

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