2011-03-15 84 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,并且在两台联网的计算机上同时运行应用程序的实例。我能够从两个位置更新数据库中的记录。

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