如何发布带有数据库的程序?

Posted

技术标签:

【中文标题】如何发布带有数据库的程序?【英文标题】:How can I release a program with a database? 【发布时间】:2012-05-26 19:16:20 【问题描述】:

我刚刚完成了一个使用相当大的数据库文件的大型程序。以前写完程序,我只是把.exe文件上传到我的网站,然后把链接发给想用的人,但现在还有一个数据库文件要包含..

有没有办法将数据库文件“包装”在 .exe 中?如果没有,我怎样才能发布我的程序,以便用户只需要下载一个文件?我从来没有创建过安装程序,我也不知道怎么做。我只是上传过 .exe 文件:)。

任何帮助将不胜感激。请原谅我的经验不足:P。

程序用C#编写,数据库文件为.mdf格式(我运行的是SQL Server 2008)。我很乐意提供更多细节。 :)

【问题讨论】:

您还必须在用户的机器上部署 SQL Server。这首先需要许可证。并且非常有影响力,请考虑使用 SQL Compact 或 SQLite 来降低目标。快速部署详情在这里:msdn.microsoft.com/en-us/library/bb264562%28v=sql.90%29.aspx 【参考方案1】:

您应该让应用程序知道如何创建数据库,而不是捆绑整个数据库。一种简单的方法是在 SQL Server Management Studio 中为整个数据库创建一个脚本。然后将脚本(可能在您对其进行一些调整之后)作为资源文件包含在 exe 文件中。

比推出自己的解决方案更好的方法是使用数据访问框架,例如 EF Code First with Migrations,它内置了数据库创建和升级支持。

【讨论】:

【参考方案2】:

您可以从 Visual Studio 进行简单的设置(创建新的设置项目)。如果您需要更高级的功能,请查看Windows Xml installer

【讨论】:

【参考方案3】:

您可以包含免费的Sql Server Express,这样您的用户就不必购买 SQL Server 的许可证。如果您想完成构建 .msi 安装程序的工作,我相信您可以执行特定于 SQL 服务器的操作。

另一方面,如果你的数据量很少,你可以考虑使用Dataset的过滤功能,而不是依赖SQL server。

编辑:微软有一个新的SqlServer 2012 LocalDB,可能会很有趣:

LocalDB 是 SQL Server® Express 系列的新成员,是一个轻量级的 Express 版本具有相同的可编程性功能,但 在用户模式下运行,并具有快速、零配置的安装和 先决条件的简短列表。如果您需要一种简单的方法 从代码创建和使用数据库。它可以与 Visual Studio、其他数据库开发工具或嵌入 需要本地数据库的应用程序。

(摘自here)

【讨论】:

以上是关于如何发布带有数据库的程序?的主要内容,如果未能解决你的问题,请参考以下文章

带有本地 db .mdf 文件的 Web 应用程序如何发布到 Azure

如何在 C# 中发布带有其数据库的 Windows 窗体应用程序

如何交付带有预填充领域数据库的应用程序

发布带有数据库的应用程序

如何在带有 PostgreSQL 数据库的 Web 应用程序中拥有完整的离线功能?

如何使用带有 TNSNames 别名语法的 JDBC 瘦驱动程序连接到 Oracle 数据库