HOW TO:將變更部署到新的或現有的資料庫
更新:2007 年 11 月
當您對「資料庫專案」(Database Project) 進行變更之後,您必須執行建置指令碼,以便將這些變更部署到資料庫伺服器。當您產生建置指令碼時,會將資料庫專案「結構描述」(Schema) 與專案屬性中所指定的「目標」(Target) 資料庫相比較。如果目標資料庫存在,除非您選擇一定要重新建立資料庫,否則會建立更新指令碼。如果目標資料庫不存在或是您選擇一定要重新建立資料庫,則建置指令碼會建立資料庫。如果資料庫專案、其屬性或內容從上一次建置或部署之後已經有變更,當您下次部署此專案時,您會產生最新的建置指令碼。
重要事項: |
---|
在您建置或部署資料庫專案之前,您必須設定專案屬性來指定目標資料庫連接和資料庫名稱。如果您是使用 [新增資料庫專案精靈] 來產生資料庫專案,您可能已經指定專案屬性。您可以隨時變更專案屬性。如需詳細資訊,請參閱 HOW TO:設定資料庫專案進行建置和部署。 |
若要將資料庫專案部署到新的或現有的資料庫
在 [方案總管] 中,按一下您要部署的資料庫專案。
如果您已建立自訂組態,您可以指定應該使用此組態,其方式是在 [標準] 工具列上按一下 [方案組態] 清單中的組態名稱。根據預設,您的資料庫專案會有單一組態,而且已經選取此組態。
在 [建置] 功能表上按一下 [部署]。
即會產生資料庫專案的建置指令碼 (如果此指令碼不存在或者不是最新的),並加以部署。[輸出] 視窗會顯示部署的結果,如下所示:
------ 已開始組建: 專案: 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 略過 ==========
若要從命令列將資料庫專案部署至新的或現有的資料庫
開啟 [命令提示字元] 視窗。
瀏覽至專案目錄。
在命令提示字元中,輸入下列範例命令列來產生建置指令碼,其中 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
在命令提示字元中,輸入下列範例命令列來部署您在步驟 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
部署到多個資料庫或多部伺服器
您可以將結構描述部署到多個資料庫或多部伺服器。如果您要部署到未變更的少量伺服器或資料庫 (例如,您想要部署到個人程式開發伺服器和開發用伺服器),則可以建立多個組建組態。每一個組建組態都可以有不同的目標伺服器或資料庫。如果您需要部署較大量的伺服器,或是目標伺服器或資料庫的名稱會定期變更,則應該使用不同的方法。這些方法說明如下。
若要建立多個組建組態,以部署到多個伺服器或資料庫
在 Visual Studio Team System Database 版中開啟資料庫專案。
按一下 [建置] 功能表上的 [組態管理員]。
[組態管理員] 對話方塊隨即出現。
在 [使用中的方案組態] 清單中,按一下 [<新增>]。
[新增方案組態] 對話方塊便會開啟。
在 [名稱] 中,輸入第一個伺服器組態的名稱。
如果您在 Default 組態中已經有設定專案屬性,請按一下 [複製設定值來源] 清單中的 [預設]。
按一下 [確定]。
在 [使用中的方案組態] 清單方塊中,按一下 [<新增>]。
[新增方案組態] 對話方塊便會開啟。
在 [名稱] 中,輸入第二個伺服器組態的名稱。
如果您在 Default 組態中已經有設定專案屬性,請按一下 [複製設定值來源] 清單中的 [預設]。
按一下 [關閉]。
以滑鼠右鍵按一下 [方案總管] 中的資料庫專案,然後按一下 [屬性]。
按一下 [建置] 索引標籤。
在 [組態] 中,按一下第一個伺服器組態的名稱。
修改目標連接和資料庫名稱,使其符合第一個伺服器組態。
在 [組態] 中,按一下第二個伺服器組態的名稱。
修改目標連接和資料庫名稱,使其符合第二個伺服器組態。
按一下 [檔案] 功能表上的 [儲存選取項目],儲存您的組態設定。
現在您可以在 [標準] 工具列上指定組態,然後建置或部署該組態。
若要從命令列部署到資料庫
在 [命令提示字元] 視窗中,輸入下列命令列來部署建置指令碼 (以適當的值來取代建置指令碼名稱、伺服器名稱和目標資料庫名稱)。
MSBuild /t:Deploy /p:TargetDatabase=TargetDatabaseName /p:BuildScriptName=YourBuildScript.sql DatabaseProjectName.dbproj
注意事項: 若要部署到多部伺服器,您必須在 [命令提示字元] 視窗中指定下列命令來覆寫目標連接字串屬性:/p:TargetConnectionString="Data Source=ServerName;Integrated Security=True;Pooling=False"。
安全性
您必須具有必要的權限,才能建立資料庫 (針對新的部署) 以及建立、修改及刪除該資料庫中的「結構描述」物件來部署資料庫專案。