Share via


建置和部署資料庫到開發用或實際執行環境

資料庫開發人員會執行個別開發工作,每一位開發人員分別在不同的「隔離的開發環境」(Isolated Development Environment) (通常稱為沙箱) 中工作。 將經過測試的「資料庫專案」(Database Project) 版本部署至執行或實際執行環境的過程雖然很類似,但是有些主要差異。

一般而言,存取執行及實際執行伺服器是受到限制的。 伺服器可能包含其他必須保留的資料庫。 通常,「目標」(Target) 資料庫已存在,而且可能包含也必須保留的資料。 部署資料庫時會比部署開發環境時,較不需要修改伺服器設定。 有時候,就算您有權限可部署資料庫,可能也沒有權限可以更新伺服器設定。

設定您的資料庫專案,以部署至執行或實際執行環境

在您資料庫專案的部署屬性中,您可以進行設定以符合執行及實際執行伺服器環境。 這些設定和其他開發人員為其隔離的開發環境所做的設定是分開的。 維持這個分別,您就可以為其他開發人員無法修改的執行及實際執行環境進行專案組態設定。 每一個組態都有一個目標資料庫連接可以連接至執行或實際執行伺服器、自己的 .sqldeployment 檔案,以及自己的 .sqlcmdvars 檔案。

您也可以進行執行及實際執行設定以準備部署指令碼,但是要略過實際部署。 採取這個策略,您就可以檢閱部署指令碼、於必要時進行變更,然後手動部署至目標環境。

部署組態詳細資料

在您將專案部署至執行或實際執行環境時,應考慮下列問題:

  • 您可能要使用目標資料庫的定序,因為執行或實際執行環境已設定完成。

  • 不要每次都重新建立資料庫,因為可能會導致資料遺失。

  • 如果您正在部署新的資料庫,可能要部署資料庫屬性。 如果您正在將更新部署至現有的資料庫中,可能不需要部署資料庫屬性,因為這些屬性應該已經正確的設定。

  • 部署的程序中您可能要備份資料庫,除非您在部署程序之外已經備份物件和資料。

  • 如果可能發生資料遺失,就要封鎖部署,因為您要更新的資料庫通常包含實際執行資料。

  • 您可能要為資料庫中 (但不在資料庫專案中) 的物件產生 DROP 陳述式。 您的資料庫專案應代表正確版本的執行及實際執行「結構描述」(Schema)。 如果您在部署更新至資料庫時,必須手動移動資料,可能是例外狀況。 在這個情況下,就不要放棄物件直到移轉資料為止。

SQL 命令變數

當您部署執行或實際執行環境時,變數的值應該要適合該環境。 例如,您可能需要執行或實際執行環境中的 Service Broker 或服務憑證的值,這些值不同於開發環境中的值。 對每一個目標環境指定不同的 .sqlcmdvars 檔案,您就可以避免在變更部署目標時,變更這些變數的值。 這麼做也可以避免必須根據 MSBuild 變數來定義 .sqlcmdvars 檔案,以獲得組態特定值。 您要部署的每一個組態,可以有一個不同的 .sqlcmdvars 檔案。

部署伺服器專案

資料庫專案可以包含「資料庫物件」(Database Object)、伺服器物件,或兩者的定義。 在大部分的環境下,開發人員可以變更資料庫物件,但只有資料庫管理員可以變更伺服器物件。 您可以將伺服器物件放在不同的專案中 (稱為「伺服器專案」(Server Project)),以強制執行這項限制。 然後您可以限制版本控制,只有系統管理員可以變更伺服器專案。 在執行或實際執行環境中,伺服器專案及其物件最常和包含資料庫物件的專案分開來部署。

您要使用和部署結構描述專案的同樣程序來部署伺服器專案。

部署角色

您在資料庫中所使用的角色,必須部署至您部署該資料庫的所有伺服器。 當您將資料庫部署至執行或實際執行伺服器時,必須定義所有要求的使用者,並將這些使用者與其適當的角色建立關聯。

命令列部署

您可以從電腦的命令列來部署資料庫專案,在這部電腦上如果安裝了下列必要條件,就不會安裝 Visual Studio Premium:

  • Microsoft .NET Framework 3.5 版 Service Pack 1

  • SQL Server 管理物件 (SMO)

    這些應該安裝至任何已安裝 SQL Server 的電腦上。

除了必要條件外,您也必須將下列檔案轉移至這部電腦,也許您可以先將檔案複製到通用序列匯流排 (USB) 磁碟機:

  • 資料庫專案的建置輸出 (Debug 或 Retail)

  • Visual Studio Premium 之 [Deploy] 資料夾的內容

    通常可以在 [Program Files]\VSTSDB\Deploy 中找到。

  • SQL Server Compact Edition 的組件

在您安裝了必要條件並轉移檔案後,可以將資料庫專案 (格式為 .dbschema 檔案) 部署至目標資料庫。

一般工作

下表列出支援此案例之一般工作的說明,以及詳細資訊的連結,這些資訊可幫助您成功完成這些工作。

工作

支援主題

開始使用建置和部署:在您設定、建置及部署第一個資料庫專案前,您可以先了解如何在小組環境中使用資料庫專案, 也可以進一步了解建置及部署程序。 此外,您還可以了解可用來控制如何建置及部署專案的所有屬性與設定。

只部署已完成的物件:您可以排除內含您尚未準備部署或測試的「資料庫物件」(Database Object) 之定義的檔案。

設定資料庫專案以供建置程序:您可以進行一些可控制如何建置資料庫專案的設定。 例如,您可以指定輸出路徑。

設定資料庫專案以進行部署:

  • 您可以將組態與目標資料庫、包含部署詳細資訊的檔案,以及包含影響部署之變數的檔案產生關聯,如此就能為任何組建組態設定部署。

  • 您可以修改包含部署詳細資料的檔案,以控制部署的詳細資料。

  • 您可以自訂變數,在每個部署中使用不同的 Service Broker 或服務憑證。

  • 您可以控制部署資料庫時,資料庫屬性是否隨著更新,以及這些屬性應具備的值。

填入參考或查詢資料表:當您部署資料庫專案時,可以新增參考資料至資料表。 您可以為包含的資料可能不常變動的資料表執行這個動作,例如託運人資訊。

建置您的資料庫專案:您可以在 Visual Studio 中,或使用 MSBuild 從命令提示字元建置資料庫專案,以準備進行部署。

部署您的資料庫專案:您可以在資料庫單元測試回合中使用 MSBuild 或在命令提示字元中使用 VSDBCMD 來更新目標資料庫或伺服器,以便在 Visual Studio 中部署資料庫專案。

此外,如果您定義了自訂工作流程,也可以使用 Team Foundation Build 來部署。

疑難排解問題:您可以了解如何疑難排解有關建置及部署資料庫專案的常見問題。

相關案例

  • 開始以小組開發資料庫
    描述如何在資料庫專案中建立資料庫結構描述的離線表示,並加入至版本控制。

  • 開始以小組開發參考其他資料庫的資料庫
    描述如何建立資料庫結構描述的離線表示、定義其他資料庫的參考、為目標部署環境的變數指定值,以及將專案加入至版本控制。

  • 開始以小組開發參考 SQLCLR 物件的資料庫
    描述如何建立資料庫結構描述的離線表示、定義包含 SQL Common Language Runtime (CLR) 物件之組件的參考、定義參考這些 SQLCLR 物件的資料庫物件,以及將專案新增至版本控制。

  • 開始以小組開發使用 XML 結構描述集合的資料庫
    描述如何建立資料庫結構描述的離線表示、定義 XML 結構描述定義 (XSD) 檔案的參考、定義使用該檔案的 XML 結構描述集合、定義使用 XML 結構描述集合的資料行,以及將專案新增至版本控制。

  • 開始以小組開發參考共用伺服器物件的資料庫
    描述如何建立資料庫結構描述的離線表示、定義共用的「伺服器專案」的參考、新增伺服器專案中所定義之物件的參考,以及新增資料庫專案至版本控制。

  • 建置和部署資料庫到隔離的開發環境
    描述如何建置並部署資料庫到隔離的開發環境。 您可以先分開測試變更,然後再將變更簽入版本控制中,以便與小組共用。 您應該先分開測試變更,然後再將變更建置及部署至執行或實際執行環境。

請參閱

概念

撰寫和變更資料庫程式碼

建立和修改資料庫與伺服器物件