将 SQL Server CE 数据库 (.sdf) 从 3.5 更新到 4.0
Posted
技术标签:
【中文标题】将 SQL Server CE 数据库 (.sdf) 从 3.5 更新到 4.0【英文标题】:Update SQL Server CE database (.sdf) from 3.5 to 4.0 【发布时间】:2012-12-06 15:00:26 【问题描述】:我需要将 SQL Server Compact 数据库从 3.5 升级到 4.0 版本。我正在使用 linq-to-sql
我尝试了一些在 *** 上发现的东西,但没有帮助:
我尝试了Add 4.0 connection
对话框(没有错误消息,bak 文件已创建)
我尝试在代码中升级:(没有错误消息)
System.Data.SqlServerCe.SqlCeEngine engine= new System.Data.SqlServerCe.SqlCeEngine("Data source = ...");
engine.Upgrade();
我检查了数据库损坏(系统返回没有损坏问题)
System.Data.SqlServerCe.SqlCeEngine engine= new System.Data.SqlServerCe.SqlCeEngine("Data source = ...");
engine.Verify();
在这些操作之后,我想重新创建 dbml 文件 - 我收到了错误消息
不兼容的数据库版本 (..) DB 版本 4000000,请求的版本 3505053 (..)
在调试模式下,我检查了db.Connection.ServerVersion
= 返回 3.5.8080.0
在数据库连接属性版本是 4.0.8876.1
有什么建议吗?
【问题讨论】:
【参考方案1】:将数据库升级到 4.0 后,您将无法再创建 dbml 文件,因为负责此操作的工具仅适用于 3.5 数据库文件。一种可能的解决方法是拥有两个版本的数据库,一个 3.5 用于生成 dbml,另一个用于使用。请记住使用 SqlCeConnection 对象初始化 DataContext 对象,否则 4.0 将无法使用 LINQ to SQL - 或者您可以尝试我的 SQL Server Compact Toolbox,它允许您直接从 4.0 数据库文件生成 DataContext(仍然必须使用 SqlCeConnection 初始化对象)
【讨论】:
@ErikEJ 在我的情况下,即使在我使用 SQL Server Compact Toolbox 生成DataContext
之后,我仍然需要使用 SqlCeConnection
对象对其进行初始化,否则我会遇到此“不兼容的数据库版本”错误。 以上是关于将 SQL Server CE 数据库 (.sdf) 从 3.5 更新到 4.0的主要内容,如果未能解决你的问题,请参考以下文章
生成 SQL Server CE 数据库的快照与简单地复制 .SDF 文件有何不同?
如何在 VS2008 和 SQL Server CE 上基于现有的 .sdf 文件创建空本地数据库
通过 Python 加载、查询 SQL Server CE 4.0 数据库文件