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

Sql server 如何将SQL Server数据库转换为其他格式,以便在没有SQL Server服务的情况下部署它?,sql-server,Sql Server,我开发了几个使用SQLServer2005Express的桌面应用程序 现在,我需要在不需要SQL Server服务的环境中部署我的应用程序 我需要一种机制,以便我只能使用.MDF文件,或者将该文件转换为这样的格式,以便我可以在不运行SQL Server 2005服务的情况下部署我的应用程序 我能做什么 请记住,数据库设计相当复杂。因此,我试图避免重新创建MS Access文件。使用SQLite可能是一种选择。但是我试图避免更改我的源代码。简而言之,你不能 除非您的数据库是一组简单的表,只有最简

我开发了几个使用SQLServer2005Express的桌面应用程序

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

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

我能做什么

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

简而言之,你不能

除非您的数据库是一组简单的表,只有最简单的关系和联接,并且您只执行简单的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,因为它是完全可移植的,可以在任何地方工作。它也不涉及安装任何服务。咬紧牙关:)

如果您能够接受它的限制,例如最大数据库大小为4GB,那么它就可以工作。您需要将.mdf文件转换为SQL CE使用的.sdf格式,如下所示

虽然Dai提出了一些好的观点,但我认为您也可以在考虑SQL Server 2012的LocalDB时找到价值。这本质上是为SQL Express和SQL server提供动力的同一个DB引擎,但它是作为客户端应用程序的子exe自动运行的,而不是像SQLExpress和SQL server那样作为服务运行的

本文比较了LocalDB、SQL Compact、SQL Express和SQL Server: