2009-06-02 37 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