REVISIÓN: Recibe un mensaje de error cuando ejecuta una aplicación basada en SQL Server Compact 3.5 después de instalar la versión de 32 bits de SQL Server Compact Edition 3.5 Service Pack 2 en un x64 equipo

Síntomas

En equipos de 64 bits, puede fallar una aplicación SQL Server Compact ("Compact") basado en uno de los dos síntomas siguientes:
Síntoma 1
La aplicación está intentando cargar una versión de compacto que es incompatible con la versión que está instalada en el equipo. Las versiones incorrectas podrían provocar inestabilidad en la aplicación y se anulará la carga de compacto.



Síntoma 2
La aplicación no puede cargar los componentes nativos de SQL Server Compact que se corresponde con el proveedor ADO.NET.



Las siguientes son las excepciones exactas que están asociadas con estos problemas:

Excepción de falta de coincidencia de versión
Archivo versión ha detectado una incoherencia entre el proveedor de ADO.NET y binarios nativos de SQL Server Compact que podría resultar en una funcionalidad incorrecta. Esto puede deberse a la presencia de varias instancias de SQL Server Compact de diferentes versiones. Instale los binarios de SQL Server Compact de versión coincidente [versión de archivo del proveedor de ADO.NET = XXXX, versión del archivo binario nativo = YYYY]

No se puede cargar ME dll excepción"
No se puede cargar la DLL 'sqlceme35.dll': no se pudo encontrar el módulo especificado. (Excepción de HRESULT: 0x8007007E)

Causa

Aplicaciones basadas en Compact generalmente programar el proveedor ADO.NET Compact (System.Data.SqlServerCe.dll). Este proveedor a su vez se comunica con los componentes nativos Compact. Con el fin de evitar inconsistencias distintos, un proveedor de ADO.NET compacta de una versión determinada sólo puede hablar con los componentes nativos Compact de la misma versión. Los siguientes son algunos escenarios de ejemplo donde se romperá esta directiva y que dará como resultado una de las dos excepciones mencionadas anteriormente:

Escenario de ejemplo 1

Instalar SQL Server 2008 R2 (Esto instala la versión de 32 bits de SQL Server Compact 3.5 Service Pack 2). A continuación, cuando se ejecuta una aplicación de 64 bits la implementación privada de SQL Server Compact SP1, se produce un error con la excepción de "Discrepancia de versiones".

Motivo del error

  • Cuando se instala la versión de 32 bits de la SQL Server Compact 3.5 Service Pack 2, agrega el proveedor ADO.NET (System.Data.SqlServerCe.dll) de versión 3.5.8080 a la caché de ensamblados Global (GAC) y el x86 nativo componentes se colocan en la carpeta % % de programa (x 86).
  • Cuando se ejecuta la aplicación de 64 bits que se implementa de forma privada SP1 de SQL Server Compact, se carga el proveedor de ADO.NET desde GAC (versión 3.5.8080) pero componentes de 64 bits nativas se cargan desde la carpeta de aplicación que es la versión 3.5.5692.0.
  • Hay una incoherencia de versión que no está habilitada de acuerdo con la directiva.

Escenario de ejemplo 2

  • Instalar el x86 versión de SQL Server Compact 3.5 SP1 en un equipo de 64 bits.
  • A continuación, instalar la x64 versión de SQL Server Compact 3.5 SP1.
  • En el mismo equipo, descargue e instale la versión de 32 bits de SQL Server Compact 3.5 Service Pack 2 desde el Web.
  • Se ejecuta una aplicación de 64 bits que utiliza SQL Server Compact SP1 o SP2.
  • Cuando se ejecuta la aplicación, se produce un error con el "no se puede cargar el archivo dll ME" excepción.

Motivo del error

  1. Instalar la versión de 32 bits de SQL Server Compact 3.5 Service Pack 2 actualiza SQL Server Compact 3.5 SP1 x86 instalaciones de SQL Server Compact 3.5 Service Pack 2. Da como resultado la x86 instalación compacto sea distinto de la x64 de la instalación.
  2. Cuando se ejecuta una aplicación de 64 bits que utiliza Compact SP1 o SP2 en el equipo, carga el proveedor de ADO.NET de la GAC (versión 3.5.8080). Sin embargo, no puede encontrar los binarios nativos de la misma versión en el sistema. Por lo tanto, se produce la excepción.

Solución

En cualquier punto determinado de tiempo, el estado correcto de un equipo de 64 bits para SQL Server Compact, sería el siguiente:
  • X86 y amd64 msi se instala.
  • X86 y amd64 MSI es de la misma versión.

Por lo tanto, si usted enfrenta problemas similares, asegúrese de que el equipo tiene ambas x86 y amd64 paquetes MSI de Compact están instalados y son de la misma versión. En caso de que, no lo son, instale SP2 Compact x86 y x64 msi desde el vínculo siguiente según sea necesario:

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".
Propiedades

Id. de artículo: 974247 - Última revisión: 13 ene. 2017 - Revisión: 1

Comentarios