我开发了几个使用SQL Server 2005 Express的桌面应用程序。
现在我需要在不期望SQL Server服务的环境中部署我的应用程序。
我需要一种机制,以便我只能使用.MDF
文件或以其他方式将文件转换为这种格式,这样我就可以在不运行SQL Server 2005服务的情况下部署我的应用程序。
我该怎么办?
请记住,数据库设计相当复杂。所以我试图避免重新创建MS Access文件。使用SQLite可能是一种选择。但我试图避免更改我的源代码。
答案 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。