我之前已经看过这个问题,但无法找到明确解释什么是/不可能以及哪些变通办法可用。
我有一个现有的C#应用程序,它使用SQL CE来存储本地信息。该数据库仅由单个应用程序访问,并存储在用户的appdata文件夹中。
某些环境将appdata文件夹重定向到网络共享,导致SQL CE抛出异常:“内部错误:无法打开共享内存区域。”
我已经读过SQL CE 3.5 SP2应该允许再次连接到网络共享,而SP1没有,但是我无法让它工作。有没有人成功获得任何版本的SQL CE在网络共享上工作?如果是这样,您使用什么版本/代码来使其工作?
我尝试在连接字符串中使用mode = Exclusive而没有运气。
或者,有没有人找到不同的解决方法?数据需要存储在用户的配置文件中,因为它是特定于每个用户的,并且不应该被系统上的任何其他用户访问。
答案 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;"