0

我开发了几个使用 SQL Server 2005 Express 的桌面应用程序。

现在我需要在不需要 SQL Server 服务的环境中部署我的应用程序。

我需要一种机制,以便我只能使用该.MDF文件或将文件转换为这种格式,这样我就可以在不运行 SQL Server 2005 服务的情况下部署我的应用程序。

我能做些什么?

请记住,数据库设计相当复杂。所以我试图避免重新创建 MS Access 文件。使用 SQLite 可能是一种选择。但我试图避免更改我的源代码。

4

3 回答 3

1

虽然 Dai 提出了一些好的观点,但我认为您也可以在考虑 SQL Server 2012 的 LocalDB 时发现价值。这本质上是支持 SQL Express 和 SQL Server 的数据库引擎,但它作为客户端应用程序的子 exe 自动运行,而不是像 SQLExpress 和 SQLServer 这样的服务。

这篇文章比较了 LocalDB、SQL Compact、SQL Express 和 SQL Server:http: //blogs.msdn.com/b/jerrynixon/archive/2012/02/26/sql-express-v-localdb-v-sql-compact-版本.aspx

于 2013-04-27T06:58:41.397 回答
0

SQL Server Compact Edition could work if you can live with its limitations, such as a maximum database size of 4 GB. You would need to convert the .mdf file to the .sdf format used by SQL CE, and here is instructions on how to do that.

于 2013-04-27T05:13:39.843 回答
0

简而言之,你不能。

除非您的数据库是一组简单的表,只有最简单的关系和连接,并且您只执行简单的 CRUD 操作(您的帖子暗示不是这样),否则您无法拥有可在 RDBMS 引擎之间移植的数据库。

传统上,您会使用一些通用接口抽象出数据访问层,然后实现特定于 RDMBS 的查询和命令,例如

public interface IDatabase {
    Account GetAccount(Int64 accountId);
    Account[] GetAccounts(Int32 page, Int32 pageSize, out Int32 totalRecords);
    etc...
}

public class MSSqlServerDatabase : IDatabase {
}

public class MySqlServerDatabase : IDatabase {
}

但是,您可能最好转向 SQLite,因为它是完全可移植的并且可以在任何地方工作。它也不涉及安装任何服务。硬着头皮 :)

于 2013-04-27T05:04:54.147 回答