HOW TO:將變更部署到新的或現有的資料庫
更新:2010 年 6 月
當您對「資料庫專案」(Database Project) 進行變更之後,就必須將這些變更部署到資料庫伺服器。 當您部署資料庫專案時,系統會比較您在資料庫專案中定義的「結構描述」(Schema) 與目標結構描述,以便識別同步處理結構描述所必須進行的動作集。 這些動作會與預先部署指令碼和部署後指令碼結合以構成完整的部署指令碼。 如果目標資料庫不存在或是您選擇永遠重新建立資料庫,則系統會使用 .dbschema 檔案中定義的結構描述來建立資料庫。 當您建立新的資料庫時,如果已有同名的資料庫存在,部署指令碼會嘗試捨棄現有的資料庫。 如果資料庫專案、其屬性或內容從上一次建置或部署之後已經有變更,當您建置此專案時,就會產生最新的 .dbschema 檔案。
在實際執行環境中,您可能不會直接部署到目標資料庫。 而是,您會產生部署指令碼 (.SQL 檔案)、檢閱並選擇性地更新指令碼,然後使用 [Transact-SQL 編輯器] 來部署它。 或者,您也可以使用 [SQL Server Management Studio] 等工具。
此外,您還可以使用 VSDBCMD.EXE 工具來部署資料庫。 您可以指定想要用來部署資料庫的 .dbschema 檔案。 您可以使用 VSDBCMD,從尚未安裝 Visual Studio 的電腦進行部署。 如需詳細資訊,請參閱 HOW TO:使用 VSDBCMD.EXE 從命令提示字元準備資料庫進行部署。
重要事項 |
---|
在您部署資料庫專案之前,必須設定專案屬性來指定目標資料庫連接和資料庫名稱。 如果您是使用 [新增資料庫專案精靈] 來產生資料庫專案,您可能已經指定專案屬性。 您可以隨時變更專案屬性。 如需詳細資訊,請參閱 HOW TO:設定資料庫專案的資料庫屬性。 |
必要的使用權限
您必須具有必要的權限,才能建立資料庫 (針對新的部署) 以及建立、修改及刪除該資料庫中的「結構描述」(Schema) 物件來部署資料庫專案。
部署至單一資料庫
您可以使用 Visual Studio、從命令提示字元,或在 Transact-SQL 編輯器中執行部署指令碼,藉以部署資料庫。 您可以使用 Visual Studio 所提供的 Transact-SQL 編輯器,也可以使用SQL Server Management Studio 等工具。
若要將資料庫專案部署到新的或現有的資料庫
在 [方案總管] 中,按一下您要部署的資料庫專案。
如果您已建立自訂組態,您可以指定應該使用此組態,其方式是在 [標準] 工具列上按一下 [方案組態] 清單中的組態名稱。 根據預設,您的資料庫專案會有單一組態,而且已經選取此組態。
在 [建置] 功能表上按一下 [部署]。
隨即產生資料庫專案的建置輸出 (如果此指令碼不存在或者不是最新的),並加以部署。 [輸出] 視窗會顯示部署的結果,如下所示:
ProjectName -> D:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\ProjectName\sql\ProjectName.dbschema
------ 已開始部署: 專案: ProjectName, 組態: Debug Any CPU ------
已產生部署指令碼 ProjectName.sql
正在建立 ProjectName
正在建立 dbo.ObjectName
.
.
.
.
========== 組建: 1 成功或最新狀態、0 失敗、0 略過 ==========
========== 部署: 1 成功、0 失敗、0 略過 ==========
若要從命令列將資料庫專案部署至新的或現有的資料庫
開啟 [命令提示字元] 視窗,並瀏覽至專案目錄。
在命令提示字元中,輸入下列範例命令列來部署資料庫專案 (其中 DatabaseProject 是專案的名稱):
MSBuild /t:Build;Deploy DatabaseProject.dbproj
注意事項 MSBuild.exe 必須位於 PATH 環境變數所指定的路徑上。 此外,您也必須在資料庫專案或命令列中指定 TargetDatabase 和 TargetConnectionString。 如需產生建置指令碼之命令列語法的詳細資訊,請參閱資料庫建置與部署概觀。
將會出現類似以下的結果:
Microsoft (R) Build Engine Version 3.5.21022.8
[Microsoft .NET Framework, Version 2.0.50727.1433]
Copyright (C) Microsoft Corporation 2007. All rights reserved.
Build started 5/20/2008 1:36:58 PM.
Project "ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\ProjectName\ProjectName.dbproj" on node 0 (Deploy target(s)).
Project "ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\ProjectName\ProjectName.dbproj" (1) is building "ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\ProjectName\sql\ProjectName.deploymanifest" (2) on node 0 (DspDeploy target(s)).
Deployment script ProjectName.sql generated
:
(1 row(s) affected)
Done Building Project "ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\ProjectName\sql\ProjectName.deploymanifest" (DspDeploy
target(s)).
Done Building Project "ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\ProjectName\ProjectName.dbproj" (Deploy target(s)).
Build succeeded.
0 Warning(s)
0 Error(s)
Time Elapsed 00:00:07.32
若要執行部署指令碼以部署資料庫
在您選擇的 Transact-SQL 編輯器中開啟部署指令碼。
注意事項 這個程序假設您使用 Visual Studio 隨附的 Transact-SQL。
已編譯的部署指令碼名為 ProjectName.sql,位於 SolutionName\ProjectName\sql\Configuration 資料夾。 Configuration 是組建組態的名稱,例如「偵錯」或「發行」。
在功能表列上,選擇 [資料]、[Transact-SQL 編輯器]、[SQLCMD 模式] (如果尚未啟用)。
重要事項 如果未啟用 SQLCMD 模式,當您執行部署指令碼時會發生錯誤,因為不支援 :setvar 陳述式。
在功能表列上,選擇 [資料]、[Transact-SQL 編輯器]、[執行 SQL],以執行部署指令碼。 當出現提示時,指定部署目標伺服器的連接資訊。
隨即執行部署指令碼並建立資料庫。
部署到多個資料庫或多部伺服器
您可以將結構描述部署到多個資料庫或多部伺服器。 如果您要部署到未變更的少量伺服器或資料庫 (例如,您想要部署到個人程式開發伺服器和開發用伺服器),則可以建立多個組建組態。 每一個組建組態都可以有不同的目標伺服器或資料庫。 如果您需要部署較大量的伺服器,或是目標伺服器或資料庫的名稱會定期變更,則應該使用不同的方法。 這些方法說明如下。
若要建立多個組建組態,以部署到多個伺服器或資料庫
在 Visual Studio 中開啟資料庫專案。
按一下 [建置] 功能表上的 [組態管理員]。
[組態管理員] 對話方塊隨即出現。
在 [使用中的方案組態] 清單中,按一下 [<新增>]。
[新增方案組態] 對話方塊便會開啟。
在 [名稱] 中,輸入第一個伺服器組態的名稱。
如果您在 Default 組態中已經有設定專案屬性,請按一下 [複製設定值來源] 清單中的 [預設]。
按一下 [確定]。
在 [使用中的方案組態] 清單方塊中,按一下 [<新增>]。
[新增方案組態] 對話方塊便會開啟。
在 [名稱] 中,輸入第二個伺服器組態的名稱。
如果您在 Default 組態中已經有設定專案屬性,請按一下 [複製設定值來源] 清單中的 [預設]。
注意事項 您也可以為每個具名組態設定資料庫名稱和連接字串。
按一下 [關閉]。
以滑鼠右鍵按一下 [方案總管] 中的資料庫專案,然後按一下 [屬性]。
按一下 [建置] 索引標籤。
在 [組態] 中,按一下第一個伺服器組態的名稱。
修改目標連接和資料庫名稱,使其符合第一個伺服器組態。
在 [組態] 中,按一下第二個伺服器組態的名稱。
修改目標連接和資料庫名稱,使其符合第二個伺服器組態。
按一下 [檔案] 功能表上的 [儲存選取項目],儲存您的組態設定。
現在您可以在 [標準] 工具列上指定組態,然後建置或部署該組態。
若要使用 MSBuild 從命令列部署到資料庫
在 [命令提示字元] 視窗中,輸入下列命令列來部署建置指令碼 (以適當的值來取代伺服器名稱和目標組態)。
MSBuild /t:Deploy /p:Configuration=TargetConfiguration DatabaseProjectName.dbproj
注意事項 若要部署到多部伺服器,您必須在 [命令提示字元] 視窗中指定下列命令來覆寫目標連接字串屬性:/p:TargetConnectionString="Data Source=ServerName;Integrated Security=True;Pooling=False"。 您可以為每部目標伺服器各定義一個組態,然後指定您要部署的組態。
若要使用 VSDBCMD 從命令提示字元部署資料庫專案
-
重要事項 這個程序假設您已經將必要的檔案複製到想要用來執行 VSDBCMD 的電腦。 如需詳細資訊,請參閱 HOW TO:使用 VSDBCMD.EXE 從命令提示字元準備資料庫進行部署。
開啟 [命令提示字元] 視窗,輸入下方命令列:
VSDBCMD /a:Deploy /dd:+ /manifest:manifestFileName.dbmanifest
部署資訊清單會提供其餘設定,例如目標資料庫名稱、連接字串等等,幫您省去用命令列指定的麻煩。
請參閱
工作
HOW TO:建置資料庫專案來產生已編譯的結構描述 (.dbschema) 檔案
概念
變更記錄
日期 |
記錄 |
原因 |
---|---|---|
2010 年 6 月 |
已清除簡介並加入有關如何使用 VSDBCMD 部署的詳細資訊以處理客戶回函。 |
客戶回函。 |
2011 年 5 月 |
加入如何在 Transact-SQL 編輯器中執行部署指令碼的說明程序。 |
客戶回函。 |