我已经开发了几个使用SQL Server 2005 Express的桌面应用程序。
现在,我需要在不需要SQL Server服务的环境中部署应用程序。
我需要一种机制,这样我就只能使用.MDF
文件,或者将该文件转换为这样的格式,这样我就可以在不运行SQL Server2005服务的情况下部署我的应用程序。
我能做什么?
请记住,数据库设计是中等复杂的。因此,我试图避免重新创建MS Access文件。使用SQLite可能是一种选择。但我正在努力避免更改我的源代码。
发布于 2013-04-27 06:58:41
虽然Dai提出了一些好的观点,但我认为您也可以在考虑SQL Server2012的LocalDB时找到价值。这本质上是为SQL Express和SQL server提供支持的同一个DB引擎,但它是作为客户端应用程序的子可执行文件自动运行的,而不是像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
发布于 2013-04-27 05:04:54
简而言之,你不能。
除非您的数据库是一组简单的表,只包含最简单的关系和连接,并且您只执行简单的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-27 05:13:40
如果您能够忍受SQL Server Compact Edition的限制,比如最大数据库大小为4 GB,那么它也可以工作。您需要将.mdf文件转换为SQL使用的.sdf格式,这里就是instructions on how to do that。
https://stackoverflow.com/questions/16248382
复制