从使用SQL Server Express切换到SQL Server Compact

6
到目前为止,即使服务器通常只由单个应用程序、单个用户在同一台机器上使用,我仍然在我的桌面应用程序中使用 SQL Server Express。这似乎有点傻,因为完整的服务器相当沉重。
然后我发现有一种叫做 SQL Server Compact 的东西。问题是,我的应用程序已经相当大了。所以我的问题是,如果我想改用 SQL Server Compact,那么我的代码需要做哪些改变(使用 C#)?
主要我想知道是否可以像访问 Express 版本一样访问 Compact 版本,也就是使用 ADO.NET 并将其指向 localhost\sqlexpress。所以是否可以创建另一个实例并将我的应用程序指向它,或者它是以完全不同的方式使用的?
4个回答

10

对于一个独立的桌面产品而言,与SQL Express相比,SQL CE确实是一个值得考虑的轻量级选项。

然而,除了连接字符串之外,两者之间还有其他需要注意的区别。例如,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应用程序来说,什么才是最佳选择?Express还是CE? - Neo

1

我最近在使用它,我知道的关于它们的使用是SQL Express有一个服务器可以连接,而Compact是一个sdf文件,所以你需要改变的第一件事就是连接字符串。

在这个更改之后,没有更多的重大更改需要进行,我记得,Compact几乎拥有Express服务器可用的所有指令,所以应该不会有太多问题。

查看Microsoft文档获取更多信息,或者Wikipedia

再见。


1

我会反对使用SQL CE:

  1. 它的热度低,这可能在迁移时成为问题。
  2. 最近我们做了类似你所说的事情,在从SQL Server Express转换到SQL Server Compact Edition时有巨大的性能影响。

我的建议是:

  1. 使用SQLite(我们在提到的项目中使用了它-在我们的情况下,它比SQL CE更高效) -或-
  2. 使用VistaDB(我在其他项目中使用过;虽然没有SQL Server Express高效,但仍然足够)

这两个数据库都可以像SQL Server Compact Edition一样进行XCOPY部署。


0

SQL CE与Express具有相同的大小限制,所以您应该没问题。

至于在两者之间移动,我发现this可以用于在Express数据库和Compact 3.5数据库之间移动。然后,我认为您只需要更改连接字符串 (而不是指向主机/实例,而是指向转换后的文件)。不过,两者之间有不同的特性,因此您可能需要更改原始数据库中的模式才能顺利进行转换。


1
大小限制:SQL CE 4.0 仅限于 4GB。自 SQL Express 2008 起,Express 的限制已提高至 10GB。 - Jason Williams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接