SQL Server CE - 内部错误:无法打开共享内存区域
Posted
技术标签:
【中文标题】SQL Server CE - 内部错误:无法打开共享内存区域【英文标题】:SQL Server CE - Internal error: Cannot open the shared memory region 【发布时间】:2010-04-03 16:24:51 【问题描述】:我有一个 SQL Server CE 数据库,可以在 dev 中正常工作,但安装在客户端上时出现问题。
SQL Server CE 3.5 依赖项将作为部署的一部分进行复制。 目标计算机是干净的 Windows 7 32 位 Ultimate 映像。事件日志中的异常消息是:
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,并且该网站说没有连接字符串值可以更改它,并且这些问题通常无法由最终开发人员解决。
有没有人遇到过这个问题,如果有,你能解决这个问题吗?
【问题讨论】:
所以当我安装 CE 运行时而不是进行文件复制时没有问题。 【参考方案1】:您说得对,必须安装 CE 运行时。如果您使用的是 VS2010,则必须确保安装了 CE 运行时的 SP2。
即使安装了它,我也遇到了这个问题。在我的例子中,我有一个 SQL Server CE 实例充当使用 ADO.NET 同步服务的数据库的本地缓存。这是你的场景吗?
我发现在测试机器上出现了这个错误:
如果平台是 Vista 或 Windows 7;和 如果 SQL Server CE 数据库是 与应用程序一起安装到 驻留在受保护的目录中,例如 作为 C:\Program Files 或 C:\Program 文件(x86);和 如果程序使用 标准用户凭据(即 未上报给管理员)包括以下情况的解决方法:
运行应用程序“作为 管理员”;或
将应用程序清单配置为需要管理员凭据;或
重构应用程序,使 .sdf 文件位于不受保护的目录中,例如 C:\ProgramData[某个子目录名称],并修改连接字符串以指向该区域;或
在用户空间中重新定位整个应用程序目录。例如,在“文档”或具有对 EXE 和 .SDF 文件的完全文件访问权限的类似空间中
显然,这些选项中的每一个都有其缺点。
【讨论】:
【参考方案2】:我遇到了同样的问题。
Windows 7。
这是因为用户在域中,并且授予“所有人”的权限但失败了。
必须授予 %DOMAIN%/Everyone
问候
【讨论】:
以上是关于SQL Server CE - 内部错误:无法打开共享内存区域的主要内容,如果未能解决你的问题,请参考以下文章
无法让 SQL Server CE 与 Visual Studio 2005 和 Windows CE 5.0 一起使用
SQL 2005 用IP连接时 提示发生内部连接致命错误 这是为啥?我重装了SQL server2005后还是这样 求解答