从使用 SQL Server Express 切换到 SQL Server Compact
Posted
技术标签:
【中文标题】从使用 SQL Server Express 切换到 SQL Server Compact【英文标题】:Switching from using SQL Server Express to SQL Server Compact 【发布时间】:2011-05-18 12:49:15 【问题描述】:到目前为止,我一直在我的桌面应用程序上使用 SQL Server Express,尽管服务器通常只由同一台计算机上的单个应用程序、单个用户使用。这对我来说总是有点傻,因为完整的服务器相当沉重。
然后我发现有一个叫做 SQL Server Compact 的东西。问题是,我的应用程序已经相当大了。所以我的问题是,如果我想更改为 SQL Server Compact,我们正在讨论对我的代码进行哪些更改(使用 C#)?
我主要想知道是否可以像访问 Express 版本一样访问 Compact 版本,后者使用 ADO.NET 并将其指向 localhost\sqlexpress。那么是否可以使用 Compact 创建另一个实例并将我的应用程序指向该实例,还是以完全不同的方式使用它?
【问题讨论】:
【参考方案1】:对于独立的桌面产品,它肯定是一个比 SQL Express 更值得考虑的轻量级选项。
但是,除了连接字符串之外,还需要注意两者之间的差异。例如,SQL CE 不支持存储过程、用户定义函数或触发器。此外,它不支持 Express 支持的所有数据类型。在技术层面上,它还与您的应用程序一起运行。
另一个考虑因素是,虽然 SSMS 可以与 SQL CE 数据库一起使用,但它的功能不如 SQL Express 那样全面。然而,有很多很好的工具可以填补这些空白。请查看 Erik Jensen 的博客以获得良好的概述。
Everything SQL Server Compact
还可以查看他用于将 SQL Express 数据库迁移到 SQL Compact 的工具:
How to Migrate/Downsize a SQL Server database to SQL Server Compact 4.0 (and 3.5)
最后看看这个 SO 问题,了解两个产品之间的更多背景:
What are the limitations to SQL Server Compact? (Or - how does one choose a database to use on MS platforms?)
【讨论】:
那么 Windows 应用程序的最佳选择是什么?快递还是 CE?【参考方案2】:我最近使用它,顺便说一下,我知道使用它们的事情是 SQL Express 有一个要连接的服务器,而且,Compact 是一个 sdf 文件,所以你必须改变的第一件事就是连接字符串。
这个改动之后,就没有什么大的改动了,我记得,compact 几乎有 express server 的所有指令,所以,问题不大。
查看 Microsoft 文档了解更多信息,或访问Wikipedia。
再见。
【讨论】:
【参考方案3】:我会投票反对 SQL CE:
-
它有 no views,这可能是迁移时的问题。
我们最近做了一些与您描述的类似的事情,并且在从 SQL Server Express 切换到 SQL Server Compact Edition 时产生了巨大的性能影响。
我的建议是:
-
使用SQLite(我们为我提到的项目所做的 - 在我们的例子中它比 SQL CE 性能很多)-或-
使用VistaDB(我在其他项目中使用过;性能不如 SQL Server Express,但仍然足够)
这两个数据库都可以 XCOPY 部署,就像 SQL Server Compact Edition 一样。
【讨论】:
【参考方案4】:SQL CE 的大小限制与 Express 相同,所以你应该很好。
至于在两者之间移动,我发现this 用于在快速数据库和紧凑型 3.5 数据库之间移动。然后我认为您只需要更改您的connection strings(而不是指向主机/实例,而是指向转换后的文件)。但是,两者之间存在不同的features,因此您可能必须更改原始数据库中的架构才能顺利进行转换。
【讨论】:
大小限制:SQL CE 4.0 限制为 4GB。从 SQL Express 2008 开始,对 express 的限制已提高 10GB。以上是关于从使用 SQL Server Express 切换到 SQL Server Compact的主要内容,如果未能解决你的问题,请参考以下文章
物理服务器切换时 SQL Server 2008 打开主密钥错误
从 SQL Server Express 导入 SQL Server CE
如何从 C# 代码将 SQL Server CE 迁移到 SQL Server 2012 Express
从 SQL Server CE 迁移到 SQL Server Express