如何将SQL Server数据库转换为其他格式,以便我可以在没有SQL Server服务的情况下部署它?

时间:2013-04-27 04:32:31

标签: sql-server

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

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

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

我该怎么办?

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

3 个答案:

答案 0 :(得分:1)

虽然Dai提出了一些好处,但我认为您在考虑使用SQL Server 2012的LocalDB时也会觉得有价值。这基本上与为SQL Express和SQL服务器提供支持的数据库引擎相同,但它作为客户端应用程序的子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-edition.aspx

答案 1 :(得分: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,因为它完全可移植,可以在任何地方使用。它也不涉及安装任何服务。硬着头皮:)

答案 2 :(得分:0)

SQL Server Compact Edition可以使用它的限制,例如最大数据库大小为4 GB。您需要将.mdf文件转换为SQL CE使用的.sdf格式,这里是instructions on how to do that