如何在软件安装期间生成数据库后端?

时间:2011-11-30 07:11:44

标签: c# .net sql-server database installer

我开发了一个带有SQL SERVER后端的小应用程序,我还使用Indigo Rose Setup factory 8.0为该应用程序安装了一个安装程序。我需要的是我想在安装应用程序期间使用特定的用户帐户自动创建数据库后端。

在安装程序之前,要求用户安装SQL Server或SQL Express作为先决条件,在安装数据库时,将继续安装软件。我尝试使用SQL脚本,但在安装程序软件上安装之前我不知道如何操作。我还要将数据库创建程序嵌入到主应用程序中,它将在安装完成后根据用户需要执行,但我从未尝试过它,无论它是否有效。

如果需要,我可以使用带有SQL SERVER 2005后端的C#开发系统。 那么请你给我一些解决问题的答案? 谢谢

2 个答案:

答案 0 :(得分:3)

最简单的方法是让安装程序调用sqlcmd.exe来运行sql脚本。要调用它,您需要知道sql实例的数据源(位置)。您需要从用户那里获得。例如,machinename,machinename \ instancename或通常sqlexpress是machinename \ SQLExpress。

http://msdn.microsoft.com/en-us/library/ms165702.aspx

您也可以支持pre-req并为您的客户安装sqlexpress。有一个cmdline来安装它:

http://msdn.microsoft.com/en-us/library/ms144259.aspx

没有sql依赖的另一个选项是编写自己的自定义操作(命令行/ API),在脚本中的GO语句之间进行解析并使用ADO.net执行。

设置之外的另一个选择是分离设置和配置。安装程序仅放下位,并且数据库是在运行时通过产品运行时的配置阶段创建的。这有许多好处,包括能够在设置阶段之后和配置阶段之前更新您的位(使用补丁或自动)。您还可以提供更好的交互式体验并在运行时处理问题 - 通过设置,您的选择是设置失败并将其回滚,这是一种糟糕的体验。

希望有所帮助。

答案 1 :(得分:2)

布莱恩已经给了你很好的建议。我的建议是让应用程序本身能够通过运行部署脚本来部署数据库。您可以使用像dbutilscmd这样的库来解析.sql脚本并从应用程序内部执行批处理。我还建议您的脚本能够升级数据库,而不仅仅是部署它。当你发布v.2.0的应用程序时,这将非常方便。请参阅Version Control and your Database

要考虑的一件事是,初始数据库部署通常需要提升的权限上下文。有一些选项,请参阅Teach Your Apps To Play Nicely With Windows Vista User Account Control