无法加载SQL Server精简的本机组件

我已经在X64 Win7的安装SQL Server精简版4.0,这既为Asp.Net和桌面应用程序运行。 这种电脑还具有安装Visual Studio 2010 SP1。 但我的Server 2008 R2中产生以下错误Asp.Net的应用程序,但它可以运行桌面应用程序:

Unable to load the native components of SQL Server Compact corresponding to the ADO.NET provider of version 8482. Install the correct version of SQL Server Compact. Refer to KB article 974247 for more details.

我曾与一个SqlDataSource和的SqlCeConnection都尝试。 同样的错误。 我的web.config是象下面这样:

<?xml version="1.0"?> <configuration> <connectionStrings> <add name="SQLCE" connectionString="Data Source=|DataDirectory|\a.sdf" providerName="System.Data.SqlServerCe.4.0" /> </connectionStrings> <system.web> <compilation debug="true" targetFramework="4.0"> <assemblies> <add assembly="System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/> </assemblies> </compilation> </system.web> </configuration>

也试图复制dll的这里sugested,但没有效果。

--------------解决方案-------------

终于拿到了SQL Server精简版4.0 IIS 7.5下工作。 问题是权限问题。 当前的应用程序池的标识 IWAM_plesk(默认)没有进入到SQL Server Compact 4.0文件夹:

C:\ Program Files文件\ Microsoft SQL Server的精简版\ V4.0

C:\ Program Files文件(x86)的\ Microsoft SQL Server的精简版\ V4.0

我只是授予读取和执行列出文件夹内容的权限,现在,它就像一个魅力。

有两种方法来部署的SQL Server CE 4.0在ASP.net。

  1. 中等信任,或
  2. 私人部署。

您的配置文件使用版本4.0.0.0 -

<add assembly="System.Data.SqlServerCe, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>

这需要中等信任,并且要求应用程序池有权限的用户来访问的SQL Server Compact COM DLL文件C:\Program Files\Microsoft SQL Server Compact Edition

其中,中等信任失败,你可以尝试私人部署。 这是我的偏好,有机会东西少将来出错,您的系统的某个时候。

如果私有部署SQL Server CE的DLL文件,通过复制所有文件 v4.0\Privatebin\ ,请确保您的Web.config申报4.0.0.1版本的依赖。 这个版本是不是部署在GAC,这将确保您的个人副本被加载。

<system.web>
<compilation>
<assemblies>
<add assembly="System.Data.SqlServerCe, Version=4.0.0.1,
Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
</assemblies>
</compilation>
</system.web>

您还需要在Web.config中的DbProvider部分的相应变化

<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SqlServerCe.4.0" />
<!-- Use private copy 4.0.0.1 -->
<add invariant="System.Data.SqlServerCe.4.0"
name="Microsoft SQL Server Compact 4.0"
description=".NET Framework Data Provider for Microsoft SQL Server Compact"
type="System.Data.SqlServerCe.SqlCeProviderFactory,
System.Data.SqlServerCe,
Version=4.0.0.1,
Culture=neutral,
PublicKeyToken=89845dcd8080cc91" />
</DbProviderFactories>
</system.data>

Microsoft知识库这里http://support.microsoft.com/kb/974247/en-us这样说:

在任何给定时间点,一个64位计算机的正确状态,SQL Server精简,将是以下几点:x86和AMD64的MSI安装。 x86和AMD64的MSI是同一版本。

因此,如果您遇到任何类似的问题,确保计算机有x86和AMD64安装契约的MSI和他们是同一版本。 在情况下,他们都没有,那么从下面的链接根据需要安装SP2紧凑x86和x64的MSI: http://www.microsoft.com/downloads/details.aspx?familyid=E497988A-C93A-404C-B161-3A0B323DCE24&displaylang=en

你是否有服务器SQL CE 4.0的测试版本安装? 检查添加/查看版本信息删除程序。

我发现了一个完全不相关的问题,将导致此错误信息,所以我在这里张贴一个链接的人谁从谷歌来到这里。 这吃掉了大约三四个小时,昨晚,我最终不得不步执行反编译的二进制文件SqlServerCe,所以希望这将帮助您:在应用程序的路径某些符号防止SQL Server精简加载。

我刚刚升级从SQL CE 3.5〜4.0,通过下载微软的新版本。 这样做后,我收到了这把我带到这里的错误信息。 对我来说,解决办法是安装的EntityFramework SQL CE 4.0为好,使用的NuGet包管理器。 因此,只有在安装从网站上的二进制文件,我没有做的伎俩!

分类:asp.net 时间:2012-01-17 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.268 (s). 9 q(s)