从使用 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

如何从 LocalDB 实例切换到 SQL Express?

无法从使用 Express.js 和 SQL Server 创建的 api 获得任何响应