none
连接SQL ServerCE数据库时出错 RRS feed

  • 问题

  • 大家好:

    我使用 SQL ServerCE 数据库。我使用 System.Data.SqlServerCe.dll 这个链接库来访问数据库。

    现在出现一个异常:File version mismatch detected between
    ADO.NET Provider and native binaries of SQL
    Server Compact which could result in an incorrect
     functionality.  This could be due to the presence
     of multiple instances of SQL Server Compact of
    different versions.  Please install SQL Server
    Compact binaries of matching version [ADO.NET
    Provider File Version = 3.5.5692.*, Native Binary
     File Version = 3.5.8080.*]

    这个异常发现在Win7 x64位在操作系统上,在32位系统上没有出现该问题。

    难道这是跟操作系统有直接关系吗?还是别的什么原因造成的?

    谢谢!


    欢迎交流指教 MSN:mangonic@hotmail.com

    2013年3月1日 5:36

答案

  • MSDN 上有解决方案

    在任何给定时间点,64 位计算机,对于 SQL Server Compact 的正确状态可能如下:
    • X86 和 amd64 Msi 安装。
    • X86 和 amd64 Msi 是相同版本的。

    因此,如果面临任何类似的问题,确保该计算机有两个基于 x86 和安装 amd64 Msi 的压缩它们是相同版本。万一不是,然后压缩 SP2 x86 和 x64 Msi 从下面的链接根据需要安装:

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------

    失败原因

    • 安装 32 位版本的 SQL Server Compact 3.5 SP2 后,它会将 3.5.8080 版本的 ADO.NET 提供程序 (System.Data.SqlServerCe.dll) 添加到全局程序集缓存 (GAC) 和本机 x86 组件置于 %程序 Files(x86) %文件夹下。
    • 私下将 SQL Server Compact SP1 部署 64 位应用程序运行时,ADO.NET 提供程序加载从 GAC (3.5.8080 版),但是从它是 3.5.5692.0 版本的应用程序文件夹加载本机 64 位组件。
    • 没有版本不匹配情况下不启用每个策略。

    示例方案 2

    • 您在 64 位计算机上安装 SQL Server Compact 3.5 SP1 的 x86 版本。
    • 然后,在安装 SQL Server Compact 3.5 SP1 的 x64 版本。
    • 在同一计算机上,您可以下载并从 Web 安装 32 位版本的 SQL Server Compact 3.5 SP2。
    • 您运行的 64 位应用程序使用 SQL Server Compact SP1 或 SP2。
    • 当您运行该应用程序时,"无法加载我的 dll"的失败异常。

    失败原因

    1. 安装 32 位版本的 SQL Server Compact 3.5 SP2 升级 SQL Server Compact 3.5 SP1 x 86 到 SQL Server Compact 3.5 SP2 的安装。这会导致 86 安装正在从 x 64 安装不同的压缩。
    2. 当在计算机上运行时使用压缩 SP1 或 SP2 的 64 位应用程序时,它将 ADO.NET 提供程序加载从 gac 中 (3.5.8080 版)。但是,在系统上找不到本机二进制文件相同的版本。因此,它将引发异常


    给我写信: QQ我:点击这里给我发消息

    2013年3月2日 14:45

全部回复

  • 大家好:

    我使用 SQL ServerCE 数据库。我使用 System.Data.SqlServerCe.dll 这个链接库来访问数据库。

    现在出现一个异常:File version mismatch detected between
    ADO.NET Provider and native binaries of SQL
    Server Compact which could result in an incorrect
     functionality.  This could be due to the presence
     of multiple instances of SQL Server Compact of
    different versions.  Please install SQL Server
    Compact binaries of matching version [ADO.NET
    Provider File Version = 3.5.5692.*, Native Binary
     File Version = 3.5.8080.*]

    这个异常发现在Win7 x64位在操作系统上,在32位系统上没有出现该问题。

    难道这是跟操作系统有直接关系吗?还是别的什么原因造成的?

    谢谢!


    欢迎交流指教 MSN:mangonic@hotmail.com

    2013年2月28日 8:59
  • MSDN 上有解决方案

    在任何给定时间点,64 位计算机,对于 SQL Server Compact 的正确状态可能如下:
    • X86 和 amd64 Msi 安装。
    • X86 和 amd64 Msi 是相同版本的。

    因此,如果面临任何类似的问题,确保该计算机有两个基于 x86 和安装 amd64 Msi 的压缩它们是相同版本。万一不是,然后压缩 SP2 x86 和 x64 Msi 从下面的链接根据需要安装:

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------

    失败原因

    • 安装 32 位版本的 SQL Server Compact 3.5 SP2 后,它会将 3.5.8080 版本的 ADO.NET 提供程序 (System.Data.SqlServerCe.dll) 添加到全局程序集缓存 (GAC) 和本机 x86 组件置于 %程序 Files(x86) %文件夹下。
    • 私下将 SQL Server Compact SP1 部署 64 位应用程序运行时,ADO.NET 提供程序加载从 GAC (3.5.8080 版),但是从它是 3.5.5692.0 版本的应用程序文件夹加载本机 64 位组件。
    • 没有版本不匹配情况下不启用每个策略。

    示例方案 2

    • 您在 64 位计算机上安装 SQL Server Compact 3.5 SP1 的 x86 版本。
    • 然后,在安装 SQL Server Compact 3.5 SP1 的 x64 版本。
    • 在同一计算机上,您可以下载并从 Web 安装 32 位版本的 SQL Server Compact 3.5 SP2。
    • 您运行的 64 位应用程序使用 SQL Server Compact SP1 或 SP2。
    • 当您运行该应用程序时,"无法加载我的 dll"的失败异常。

    失败原因

    1. 安装 32 位版本的 SQL Server Compact 3.5 SP2 升级 SQL Server Compact 3.5 SP1 x 86 到 SQL Server Compact 3.5 SP2 的安装。这会导致 86 安装正在从 x 64 安装不同的压缩。
    2. 当在计算机上运行时使用压缩 SP1 或 SP2 的 64 位应用程序时,它将 ADO.NET 提供程序加载从 gac 中 (3.5.8080 版)。但是,在系统上找不到本机二进制文件相同的版本。因此,它将引发异常


    给我写信: QQ我:点击这里给我发消息

    2013年3月2日 14:45