SQL Server CE 不兼容的数据库版本

Posted

技术标签:

【中文标题】SQL Server CE 不兼容的数据库版本【英文标题】:SQL Server CE Incompatible Database Version 【发布时间】:2013-05-14 12:39:50 【问题描述】:

我有一个 SQL Server CE 4.0 数据库(.sdf 文件),当我尝试从我的应用程序 (WPF) 对数据库进行查询时,我收到以下错误。

不兼容的数据库版本。如果这是兼容文件,请运行修复。对于其他情况,请参阅文档。 [ Db 版本 = 4000000,请求版本 = 3505053,文件名 = \?\C:\Database\ShortageReport\MRPDatabase.sdf]

我已检查 SQL Server CE 4 sp1 是否已安装。 我已尝试在 Database.Net 4 和 vs2012 的连接设置中创建数据库。 我正在运行 Windows 7 64 位 我的连接字符串存储在app.config

我正在使用 SQL Server Compact Toolbox 生成上下文和映射。

我的app.config

<connectionStrings>
    <add name="DatabaseContext" 
         providerName="System.Data.SqlServerCe.4.0" 
         connectionString="Data Source=C:\Database\ShortageReport\MRPDatabase.sdf"/>
</connectionStrings>

有什么想法吗?

【问题讨论】:

见this链接 在我的例子中,它是“...Db version = 0, Requested version = 0...” 【参考方案1】:

添加对版本 4.0 System.Data.SqlServerCe.dll ADO.NET 提供程序的引用

然后用SqlCeConnection (4.0) 对象初始化DataContext 类。

using (SqlCeConnection conn = new SqlCeConnection(@"Data Source=C:\projects\Chinook\Chinook40.sdf"))

    using (Chinook db = new Chinook(conn))
    
        var list = db.Album.ToList();
        if (list.Count > 0)
            System.Diagnostics.Debug.Print("It works!");
    

【讨论】:

System.Data.SqlServerCe.dll 不在作为参考添加的程序集列表中。文件在哪里?我会尝试浏览它。 刮一下,我找到了。现在就试试。 我想从链接 Incompatible Database Version 3.5 vs 4.0 添加与问题相关的评论,因为 LInq To Sql 运行时被硬编码为 v 3.5,但是如果您使用 SqlCeConnection 对象而不是连接来初始化 DataContext字符串,它将与 4 一起使用。(ErikEJ 评论)【参考方案2】:

我从以下路径更新了 SqlServerCe.dll 引用,它已修复

参考路径:

C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Desktop\System.Data.SqlServerCe.dll

【讨论】:

【参考方案3】:

我发现了类似的问题并卸载了所有框架 SQL Server Compact 3.5 和 SQL Server Compact 3.5 SP1 我已经解决了这个问题。

干杯,

【讨论】:

以上是关于SQL Server CE 不兼容的数据库版本的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 兼容性级别和基数估计

SQL Server 兼容性级别和基数估计

sqlsever2019不兼容老版本数据备份

从 SQL Server Express 导入 SQL Server CE

sql server 2000 不兼容问题

将 SQL Server CE 4 数据库转换为没有 Visual Studio Pro 版本的 SQL Server 2008 Express