2009-06-02 69 views
0

我需要部署一个使用多个数据库的winform应用程序。我需要在我们的应用程序在本地进行交互时部署它们。如何部署SQL并附加数据库:使用ClickOnce?

我可以使用ClickOnce还是应该考虑采用其他方法?我发现了一些ClickOnce的例子,但他们都假定数据库包含在解决方案中,但这不是这种情况。

该应用程序曾经是一个web应用程序,数据库和DAL反映了这一点。我也使用合并复制与这些本地数据库的中央之一。

是我最好的方法来创建数据库的脚本,并以某种方式在安装过程中运行,然后启动合并复制来填充表?该数据库还包含超过100个sproc,并不总是与Merge Repl相媲美,所以我需要能够在初始安装中包含这些。

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

我向所有关于如何使用它的4个独立SQL DB部署此应用程序的建议开放。

谢谢!

回答

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脚本将在数据库中更新的版本号,因为它适用。当然,这需要花费大量的时间来实现,但是当它滚动时,它可以很好地解决您的问题。

+0

我不知道我完全理解。我的印象是合并代表会传播任何数据库更改。你是否在谈论别人呢? – 2009-06-02 19:24:53