如何部署SQL并附加DB:使用ClickOnce?

时间:2009-06-02 18:31:14

标签: .net winforms sql-server-2005 deployment clickonce

我需要部署一个使用多个db的winform应用程序。我需要在应用程序本地交互时使用我的应用程序部署它们。

我可以使用ClickOnce,还是应该考虑采用其他方法?我找到了几个ClickOnce的例子,但他们都认为数据库包含在解决方案中,而这不是这里的情况。

这个应用程序曾经是一个webapp,DB和DAL反映了这一点。我也在使用Merge Replication和这些本地数据库到中央数据库。

我是编写数据库的脚本的最佳方法,并在安装过程中以某种方式运行它们,然后启动合并复制以填充表格? DB还包含超过100个sproc,它们并不总是与Merge Repl很好用,因此我需要能够在初始安装中包含这些。

否则,我想我可能会想出如何在安装过程中附加数据库,其中包括sprocs但我不知道该怎么做。

我对所有关于如何使用4个单独的SQL DB部署此应用程序的建议持开放态度。

谢谢!

1 个答案:

答案 0 :(得分:2)

如果您在本地使用SQL Express,则可以将数据库作为连接字符串的一部分附加,但我不知道这对于复制有用。您可以考虑在本地附加数据库,并放置一个包含数据库版本号的修订表。然后可以编写您的应用程序以检查数据库的修订版本并运行SQL脚本以将数据库升级到最新版本。这就是DotNetNuke执行滚动升级的方式。您只需为每个版本维护特定于版本的.SQL文件,并将其包含在单击一次部署文件中。通过这种方式,您可以前往任何错过的修订版本以进入数据库的最终修订版。


在伪代码中,它将类似于:

 Check the database version in Revision Table
     If less than current version
        Load SQL file list from path
            Foreach file with revision > current Revision
               Execute TSQL Scripts

每个TSQL脚本都会在应用时更新数据库中的版本号。当然,这需要花费大量的时间来实施,但是当它滚动时,它可以很好地解决您的问题。