HOW TO:將變更部署到新的或現有的資料庫

更新:2007 年 11 月

當您對「資料庫專案」(Database Project) 進行變更之後,您必須執行建置指令碼,以便將這些變更部署到資料庫伺服器。當您產生建置指令碼時,會將資料庫專案「結構描述」(Schema) 與專案屬性中所指定的「目標」(Target) 資料庫相比較。如果目標資料庫存在,除非您選擇一定要重新建立資料庫,否則會建立更新指令碼。如果目標資料庫不存在或是您選擇一定要重新建立資料庫,則建置指令碼會建立資料庫。如果資料庫專案、其屬性或內容從上一次建置或部署之後已經有變更,當您下次部署此專案時,您會產生最新的建置指令碼。

重要事項:

在您建置或部署資料庫專案之前,您必須設定專案屬性來指定目標資料庫連接和資料庫名稱。如果您是使用 [新增資料庫專案精靈] 來產生資料庫專案,您可能已經指定專案屬性。您可以隨時變更專案屬性。如需詳細資訊,請參閱 HOW TO:設定資料庫專案進行建置和部署

若要將資料庫專案部署到新的或現有的資料庫

  1. 在 [方案總管] 中,按一下您要部署的資料庫專案。

    如果您已建立自訂組態,您可以指定應該使用此組態,其方式是在 [標準] 工具列上按一下 [方案組態] 清單中的組態名稱。根據預設,您的資料庫專案會有單一組態,而且已經選取此組態。

  2. 在 [建置] 功能表上按一下 [部署]。

    即會產生資料庫專案的建置指令碼 (如果此指令碼不存在或者不是最新的),並加以部署。[輸出] 視窗會顯示部署的結果,如下所示:

------ 已開始組建: 專案: DatabaseProject,組態: Default Any CPU ------

正在為 TargetDatabaseName : EnableFullTextSearch, BlockIncrementalDeploymentIfDataLoss 建置部署指令碼

DatabaseProject --> file:///ProjectDrive:/Documents%20and%20Settings/UserName/My%20Documents/Visual%20Studio%202005/Projects/SolutionName/DatabaseProject/sql/DatabaseProject.TargetServerName_TargetInstanceName.TargetDatabaseName.sql

------已開始部署: 專案: DatabaseProject, 組態: Default Any CPU ------

正在部署指令碼 ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2005\Projects\SolutionName\DatabaseProject\sql\DatabaseProject.TargetServerName_TargetInstanceName.TargetDatabaseName.sql 到伺服器 TargetServerName\TargetInstanceName

file:///ProjectDrive:/Documents%20and%20Settings/UserName/My%20Documents/Visual%20Studio%202005/Projects/SolutionName/DatabaseProject/sql/DatabaseProject.TargetServerName_TargetInstanceName.TargetDatabaseName.sql --> 伺服器:"TargetServerName\TargetInstanceName", 資料庫:"TargetDatabaseName"

========== 組建: 1 成功或最新狀態、0 失敗、0 略過 ==========

========== 部署: 1 成功、0 失敗、0 略過 ==========

若要從命令列將資料庫專案部署至新的或現有的資料庫

  1. 開啟 [命令提示字元] 視窗。

  2. 瀏覽至專案目錄。

  3. 在命令提示字元中,輸入下列範例命令列來產生建置指令碼,其中 DatabaseProject 是專案的名稱:

    MSBuild /t:Build DatabaseProject.dbproj

    注意事項:

    MSBuild.exe 必須位於 PATH 環境變數所指定的路徑上。此外,您也必須在資料庫專案或命令列中指定 TargetDatabase 和 TargetConnectionString。如需產生建置指令碼之命令列語法的詳細資訊,請參閱資料庫建置與部署概觀

    將會出現類似以下的結果:

Microsoft (R) Build Engine Version 3.5.20418.0

[Microsoft .NET Framework, Version 2.0.50727.1318]

Copyright (C) Microsoft Corporation 2007. All rights reserved.

Build started 5/3/2007 2:27:39 PM.

__________________________________________________

Project "ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2005\Projects\SolutionName\DatabaseProject\DatabaseProject.dbproj" (Build target(s)):

Target SqlBuild:

Building deployment script for TargetDatabaseName : EnableFullTextSearch, BlockIncrementalDeploymentIfDataLoss

. DatabaseProject --> file:///ProjectDrive:/Documents%20and%20Settings/UserName/My%20Documen

ts/Visual%20Studio%202005/Projects/SolutionName/DatabaseProject/sql/DatabaseProject.TargetServerName_TargetInstanceName.TargetDatabaseName.sql

Build succeeded.

0 Warning(s)

0 Error(s)

Time Elapsed 00:00:05.01

  1. 在命令提示字元中,輸入下列範例命令列來部署您在步驟 3 中產生的建置指令碼:

    MSBuild /t:Deploy DatabaseProject.dbproj

    將會出現類似以下的結果:

    Microsoft (R) Build Engine Version 3.5.20418.0

    [Microsoft .NET Framework, Version 2.0.50727.1318]

    Copyright (C) Microsoft Corporation 2007. All rights reserved.

    Build started 5/3/2007 2:27:39 PM.

    __________________________________________________

    Project "ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2005\Projects\SolutionName\DatabaseProject\DatabaseProject.dbproj" (Deploy target(s)):

    Target SqlDeploy:

    Deploying script ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2005\Projects\SolutionName\DatabaseProject\sql\DatabaseProject.TargetServerName_TargetInstanceName.TargetDatabaseName.sql to server TargetServerName\TargetInstanceName

    file:///ProjectDrive:/Documents%20and%20Settings/UserName/My%20Documents/Visual%20Studio%202005/Projects/SolutionName/DatabaseProject/sql/DatabaseProject.TargetServerName_TargetInstanceName.TargetDatabaseName.sql --> Server:"TargetServerName\TargetInstanceName", Database:"TargetDatabaseName"

    Build succeeded.

    0 Warning(s)

    0 Error(s)

    Time Elapsed 00:00:02.56

部署到多個資料庫或多部伺服器

您可以將結構描述部署到多個資料庫或多部伺服器。如果您要部署到未變更的少量伺服器或資料庫 (例如,您想要部署到個人程式開發伺服器和開發用伺服器),則可以建立多個組建組態。每一個組建組態都可以有不同的目標伺服器或資料庫。如果您需要部署較大量的伺服器,或是目標伺服器或資料庫的名稱會定期變更,則應該使用不同的方法。這些方法說明如下。

若要建立多個組建組態,以部署到多個伺服器或資料庫

  1. 在 Visual Studio Team System Database 版中開啟資料庫專案。

  2. 按一下 [建置] 功能表上的 [組態管理員]。

    [組態管理員] 對話方塊隨即出現。

  3. 在 [使用中的方案組態] 清單中,按一下 [<新增>]。

    [新增方案組態] 對話方塊便會開啟。

  4. 在 [名稱] 中,輸入第一個伺服器組態的名稱。

  5. 如果您在 Default 組態中已經有設定專案屬性,請按一下 [複製設定值來源] 清單中的 [預設]。

  6. 按一下 [確定]。

  7. 在 [使用中的方案組態] 清單方塊中,按一下 [<新增>]。

    [新增方案組態] 對話方塊便會開啟。

  8. 在 [名稱] 中,輸入第二個伺服器組態的名稱。

  9. 如果您在 Default 組態中已經有設定專案屬性,請按一下 [複製設定值來源] 清單中的 [預設]。

  10. 按一下 [關閉]。

  11. 以滑鼠右鍵按一下 [方案總管] 中的資料庫專案,然後按一下 [屬性]。

  12. 按一下 [建置] 索引標籤。

  13. 在 [組態] 中,按一下第一個伺服器組態的名稱。

  14. 修改目標連接和資料庫名稱,使其符合第一個伺服器組態。

  15. 在 [組態] 中,按一下第二個伺服器組態的名稱。

  16. 修改目標連接和資料庫名稱,使其符合第二個伺服器組態。

  17. 按一下 [檔案] 功能表上的 [儲存選取項目],儲存您的組態設定。

    現在您可以在 [標準] 工具列上指定組態,然後建置或部署該組態。

若要從命令列部署到資料庫

  • 在 [命令提示字元] 視窗中,輸入下列命令列來部署建置指令碼 (以適當的值來取代建置指令碼名稱、伺服器名稱和目標資料庫名稱)。

    MSBuild /t:Deploy /p:TargetDatabase=TargetDatabaseName /p:BuildScriptName=YourBuildScript.sql DatabaseProjectName.dbproj

    注意事項:

    若要部署到多部伺服器,您必須在 [命令提示字元] 視窗中指定下列命令來覆寫目標連接字串屬性:/p:TargetConnectionString="Data Source=ServerName;Integrated Security=True;Pooling=False"。

安全性

您必須具有必要的權限,才能建立資料庫 (針對新的部署) 以及建立、修改及刪除該資料庫中的「結構描述」物件來部署資料庫專案。

請參閱

工作

HOW TO:準備資料庫建置指令碼

概念

資料庫建置與部署概觀

資料庫專案設定概觀

Database Edition 的用語概觀

其他資源

逐步解說 (建立及更新版本控制的資料庫結構描述)