我有一个SQL Server CE数据库在dev中工作正常,但在客户端上安装时有问题。
事件日志中的异常消息是:
Message: Internal error: Cannot open the shared memory region.
Stack Trace: at System.Data.SqlServerCe.SqlCeConnection.ProcessResults(Int32 hr) at
System.Data.SqlServerCe.SqlCeConnection.Open(Boolean silent) at
System.Data.SqlServerCe.SqlCeConnection.Open() at
System.Data.Linq.SqlClient.SqlConnectionManager.UseConnection(IConnectionUser user) at
System.Data.Linq.SqlClient.SqlProvider.Execute(
Expression query,
QueryInfo queryInfo,
IObjectReaderFactory factory,
Object[] parentArgs,
Object[] userArgs,
ICompiledSubQuery[] subQueries,
Object lastResult) at
System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(
Expression query,
QueryInfo[] queryInfos,
IObjectReaderFactory factory,
Object[] userArguments,
ICompiledSubQuery[]
subQueries) at
System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(
Expression query) at
System.Data.Linq.DataQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() at
System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) at
System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) at
Application specific stuff here
看起来这是SSCE_M_CANTOPENSHAREDMEMORY,并且网站上说没有连接字符串值来更改它,并且这些问题通常无法由最终开发人员解决。
有没有人碰到这个,如果有的话你能解决这个问题吗?
答案 0 :(得分:6)
你必须安装CE运行时才对。如果您使用的是VS2010,则必须确保安装CE运行时的SP2。
即使已经安装了,我也遇到了这个问题。在我的例子中,我有一个SQL Server CE实例作为使用ADO.NET同步服务的数据库的本地缓存。这是你的情景吗?
我发现在测试机上我遇到了这个错误:
条件的变通方法包括:
在用户空间中重新定位整个应用程序目录。例如,在“Documents”或某些类似的空间中,对EXE和.SDF文件具有完全文件访问权限
显然,每个选项都有其缺点。
答案 1 :(得分:0)
我遇到了同样的问题。
Windows 7。
这是因为用户位于域中,并且权限被授予“Everyone”并失败。
必须授予%DOMAIN%/ Everyone
问候