2011-07-21 44 views
14

He instalado SQL Server Compact Edition 4.0 en Win7 x64 y se ejecuta tanto para Asp.Net como para aplicaciones de escritorio. Esta PC también tiene instalado Visual Studio 2010 SP1. Pero mi Server 2008 R2 produce error de seguimiento para las aplicaciones ASP.NET, aunque puede ejecutar aplicaciones de escritorio:No se pueden cargar los componentes nativos de SQL Server Compact

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. 

que he probado tanto con un SqlDataSource y SqlCeConnection. Mismo error. Mi web.config es como a continuación:

<?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> 

también trató de copiar de DLL como sugested here pero ningún efecto.

Respuesta

10

finalmente consiguió SQL Server Compact Edition 4.0 trabaja bajo IIS 7.5. El problema era problema de permiso. la identidad del grupo de aplicaciones actual IWAM_plesk (por defecto) no tenía acceso a SQL Server Compact 4.0 carpetas:

C: \ Archivos de programa \ Microsoft SQL Server Compact Edition \ v4.0

C: \ Archivos de programa (x86) \ Microsoft SQL Server Compact Edition \ v4.0

Acabo de conceder Leer & Ejecutar y enumerar permisos de contenido de carpeta y ahora funciona como un amuleto.

1

¿Tiene servidor una versión beta de SQL CE 4.0 instalada? Marca Agregar/Quitar programas para obtener información sobre la versión.

+0

No, solo estas: Compact 4.0 x64 ENU, Compact 4.0 x64 Web Tools ENU, Compact 3.5 SP2 ENU, Compact 3.5 SP2 Query Tools ENU, Compact 3.5 SP2 x64 ENU. –

+0

Sí, pero qué versión (haga clic en el botón Soporte) – ErikEJ

2

Microsoft Knowledge Base aquí http://support.microsoft.com/kb/974247/en-us dice esto:

En cualquier momento dado, el estado correcto de un equipo de 64 bits, para SQL Server Compact, sería la siguiente: Tanto x86 y AMD64 MSI están instalados. Ambas MSI x86 y amd64 son de la misma versión.

Por lo tanto, si tiene problemas similares, asegúrese de que la computadora tenga ambas x86 y AMD64 MSI de Compact instaladas y que sean de la misma versión. En el caso, no son, a continuación, instalar el SP2 compacto x86 y x64 MSI del siguiente enlace, según sea necesario: http://www.microsoft.com/downloads/details.aspx?familyid=E497988A-C93A-404C-B161-3A0B323DCE24&displaylang=en

+3

Esos archivos están incluidos con el paquete NuGet SqlServerCompact.4.0.8482.1. Las carpetas x86 y amd64 en la carpeta NativeBinaries son necesarias en la misma carpeta que System.Data.SqlServerCe.dll. – Grastveit

+0

@Grastveit Gracias, funcionó perfectamente con un despliegue de xcopy. –

2

Descubrí un problema completamente diferente que causaría este mensaje de error, así que estoy publicando un enlace aquí para cualquiera que haya llegado aquí desde Google. Esto comió unas tres o cuatro horas de la noche anterior, y finalmente tuve que pasar por los binarios descomprimidos de SqlServerCe, así que espero que esto te ayude: Certain symbols in application path prevent SQL Server Compact from loading.

3

Hay dos formas de implementar SQL Server CE 4.0 en ASP.net.

  1. de confianza medio, o

  2. implementaciones privadas.

Su archivo de configuración utiliza la versión 4.0.0.0 -

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

esto requiere confianza medio, y requiere que el usuario grupo de aplicaciones que tienen permiso para acceder a los archivos DLL de SQL Server Compact COM en C:\Program Files\Microsoft SQL Server Compact Edition.

Donde falla la confianza media, puede intentar la implementación privada. Esta es mi preferencia y hay menos posibilidades de que algo salga mal con su sistema en algún momento en el futuro.

Si privada implementar las DLL de SQL Server CE, copiando todos los archivos env4.0\Private a bin\, asegúrese de que su Web.config declarar una dependencia de la versión 4.0.0.1. Esta versión no se implementa en el GAC y esto asegurará que su copia privada se cargue.

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

También requerirá un cambio correspondiente en la sección DBPROVIDER en Web.config

<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> 
0

Acabo de actualizar desde SQL CE 3,5 a 4,0, mediante la descarga de una nueva versión de Microsoft. Después de hacer esto, recibí el mensaje de error que me trajo aquí. Para mí, la solución fue instalar SQL CE 4.0 para EntityFramework también, utilizando el administrador de paquetes NuGet. ¡Así que solo instalar los binarios del sitio web no funcionó!

+0

¡Me lo agradezco! –

0

que tenían el mismo error 'No se puede cargar los componentes nativos de SQL Server Compact'

He utilizado los objetos incorporados Trate de captura y resuelto el problema. El archivo sdf que intenté abrir tenía una contraseña.

Cuestiones relacionadas