2012-04-28 54 views
2

我已經創建了電影票預訂系統,並且我需要將它部署到其他某臺機器上。我面臨着數據庫的問題。當我在另一臺機器上部署我的軟件時,它已經安裝,但由於沒有SQL服務器,它不起作用。所以,我在那裏安裝了SQL服務器。但仍然顯示我在SqlConnection中給出的服務器名稱參數有問題。我在那裏做了改變。現在我又遇到了數據綁定的問題。我需要在其他機器上部署我的軟件以及數據庫

我厭倦了一次又一次地改變一切。有沒有簡單而有效的解決方案?它非常緊急。

幫助我實現以下目標:

  • 提供數據庫與項目一起當我部署它。

  • 如果我將我的數據庫附加到其他機器上,我想使用我現有的數據綁定。

  • 我不想一次又一次地改變數據庫服務器的名稱,以保證每次連接。

+2

如果你正在創建一個電影預訂系統,你不應該在某個地方(例如在服務器上)只有一個SQL Server實例,並讓所有客戶端應用程序通過網絡指向它嗎?沒有必要在每臺機器上安裝SQL Server。 – Polynomial 2012-04-28 10:34:37

+0

您是否檢查過新安裝的計算機上正在運行的SQL服務? – 2012-04-28 10:51:58

+0

它從現在開始獲取服務器/實例名稱?配置文件是通常的方式。數據庫所在的代碼無關緊要,除非知道它在哪裏。這就是說,有一些潛在的其他問題部署明智與你在做什麼。 – 2012-04-28 10:54:38

回答

0
  • 提供數據庫與項目一起當我部署它。

對於數據庫和GUI都很難「一鍵式」安裝。但是,您可以使用版本控制或時間戳部署項目來將這些項目保存在一起。源代碼控制這些項目能夠回滾並根據需要調出您需要的版本。有一些方法可以將版本號或時間戳與GUI組件相關聯,以將部署作爲一個單元進行關聯。例如,您可以將您的更改數據庫腳本(FooTable v100,v101,v102)的版本或時間戳記打印到源代碼管理中。將各種關聯存儲在某種類型的配置數據庫中。在我的工作中,我們使用SharePoint列表逐項列表部署,並使用SharePoint列表項引用來一起引用特定更改的所有不同項目。由於所有東西都是受控的,因此如果需要,我可以輕鬆找出並檢索部署項目以進行特定更改。

  • 如果我附上我的另一臺機器上的數據庫,我想用我現有的
    數據綁定。

  • 我不想一次又一次地更改數據庫服務器名稱,每連接 我所做的。

您可以使用使用諸如

數據源= myServerAddress可信連接的連接字符串;初始目錄= MyDatabase的;集成安全性= SSPI;

所以你不需要爲每個環境嵌入不同的用戶名和密碼。您可以將服務器和數據庫名稱存儲在每臺各自的環境服務器上的machine.config或web.config中。

所以在開發中,ConnectionString的可能是

數據源= myDevServer;初始目錄= myDevDataBase;集成安全性= SSPI;

上測試:

數據源= myTestServer;初始目錄= myTestDataBase;集成安全性= SSPI;

如果將它們存儲在服務器上的配置文件中,則不需要在包中對其進行更改。

如果您確實需要將該配置與包一起存儲,則應該使用技術根據您要部署的環境動態更改設置。例如,您可以使用環境變量來確定您處於哪個環境,以便知道要運行哪個代碼以動態更改配置。或者代替代碼,您可以使用XSLT來更改XML配置。您還可以在MSI中設置自定義操作以在安裝/卸載上運行。您可以在代碼中添加代碼以根據需要更改配置。

同樣,數據庫腳本本身可以根據您部署的環境進行更改。您可以使用SQLCMD變量動態更改SQL代碼(特別是3和4部分命名引用中的數據庫和服務器名稱,即如果替換devlinkserver和devdb,則devlinkserver.devdb.dbo.foo可以更改爲testlnkserver.testdb.dbo.foo與SQLCML變量)。使用SQLCMDs腳本改變變量值需要根據您正在部署的環境:

如果@@ SERVER = 'somedevdbserver'

SET:linkserver = 'DevDBServer'

如果@@服務器= 'sometestserver'

SET:linkserver = 'testDBServer'

等等

總之,保持儘可能多的您可以在所有環境中進行相同的配置。使用上述各種技術根據需要爲每個環境中需要不同的部分動態更改配置。

相關問題