逐步解說:使用 Web 部署套件部署 Web 應用程式專案 (第 2 部分,共 4 部分)
這是一系列逐步解說中的第二個,內容說明如何使用部署套件來部署 Web 應用程式專案。 如需這些系列的詳細資訊,請參閱逐步解說:使用 Web 部署套件部署 Web 應用程式專案 (第 1 部分,共 4 部分)。
在這個逐步解說中,您會變更 AdventureWorksLT 資料庫並且部署這些變更。 然後,您會變更網頁並且部署這些變更,但不部署資料庫變更。 這個逐步解說將說明下列工作:
重新部署已經部署的資料庫。
從部署中排除已經部署的資料庫。
針對 [偵錯] 組建組態建立套件。
使用 IIS 管理員,在本機電腦上安裝套件。
必要條件
如需必要條件的清單,請參閱逐步解說:使用 Web 部署套件部署 Web 應用程式專案 (第 1 部分,共 4 部分)。
針對資料庫變更設定部署
如果您想要將資料庫變更 (結構或資料) 部署至已經部署的 Web 應用程式,而且您不需要保留已經在已部署之資料庫中輸入的資料,就可以使用自動產生的指令碼來重新部署資料庫。 不過,根據預設,自動產生的指令碼不會先卸除資料庫物件,然後在目的電腦上建立 (或重新建立) 這些物件。 因此,您必須指定應該要包含 Drop 陳述式,避免指令碼嘗試建立已經存在的資料庫物件時所產生的錯誤。
在本逐步解說的這個章節中,您會對 AdventureWorksLT 資料庫的結構進行變更。 然後,您會重新部署 Web 應用程式。 您會變更資料庫部署設定,讓針對 AdventureWorksLT 資料庫自動產生的指令碼包含 Drop 陳述式,而且沒有其他資料庫指令碼會在部署期間執行。
在下列程序中,您會在資料庫和 Default.aspx 檔案中,將 Color 欄位的名稱變更為 Appearance。
若要變更資料庫欄位的名稱
在 [伺服器總管] 中,展開 App_Data 資料夾,然後按兩下 AdventureWorksLT2008_Data.mdf。
此資料庫就會在 [伺服器總管] 視窗中開啟。
在 [伺服器總管] 中,展開 Tables 資料夾。
以滑鼠右鍵按一下 [Product (SalesLT)] 資料表,然後按一下 [開啟資料表定義]。
將 [Color] 資料行的名稱變更為 Appearance,如下列範例所示:
儲存資料表,然後關閉 [資料表定義] 視窗。
開啟 Default.aspx 檔案。
在 GridView 控制項中,尋找 [Color] 資料行的 BoundField 項目,然後將 DataField、SortExpression 和 HeaderText 屬性的值從 Color 變更為 Appearance,如下列範例所示:
<asp:BoundField DataField="Appearance" HeaderText="Appearance" SortExpression="Appearance" />
儲存並關閉 Default.aspx。
按下 CTRL-F5 測試這些變更。
首頁隨即顯示。此時,[Color] 資料行已經重新命名為 [Appearance],如下圖所示:
在下列程序中,您會設定部署,讓它產生 AdventureWorksLT 資料庫的 Drop 陳述式。 您必須修改專案檔才能進行此作業,因為 Visual Studio UI 沒有提供該項設定。
若要指定應該包含 Drop 陳述式
在 [方案總管] 中,以滑鼠右鍵按一下專案,然後按一下 [在 Windows 檔案總管中開啟資料夾]。
[Windows 檔案總管] 視窗隨即開啟成專案資料夾。
使用 [記事本] 等文字編輯器來開啟 AdventureWorks.csproj 或 AdventureWorks.vbproj。
尋找代表 Debug 組建組態和 AnyCPU 平台的 PropertyGroup 項目。
這個項目包含您在專案 [屬性] 設定中,於 [封裝/發行 Web] 和 [封裝/發行 SQL] 索引標籤上輸入的設定。
在 PropertyGroup 項目中,尋找名稱為 AWLTConnectionString-Deployment 的 ObjectGroup 項目。
這個項目包含 [封裝/發行 SQL] 索引標籤上與 AdventureWorksLT 資料庫相關的設定。
在 ObjectGroup 項目中,將 ScriptDropsFirst="True" 屬性加入至位於第一個 Object 項目中的 PreSource 項目。
下列範例顯示包含已變更之 PreSource 項目的 PropertyGroup 項目 (您專案檔中該項目的部分詳細資料可能會與此範例稍有不同)。
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> ... <PublishDatabaseSettings> ... <Objects> ... <ObjectGroup Name="AWLTConnectionString-Web.config" Order="2"> <Destination Path="..." /> <Object Type="dbFullSql"> <PreSource Path="..." ScriptSchema="True" ScriptData="True" CopyAllFullTextCatalogs="False" ScriptDropsFirst="True"/> <Source Path="..." Transacted="True" /> </Object> <Object Type="dbFullSql" Enabled="True"> <Source Path="...AdventureWorksGrant.sql" Transacted="True" /> </Object> </ObjectGroup> </Objects> </PublishDatabaseSettings> </PropertyGroup>
儲存並關閉 AdventureWorks.csproj 或 AdventureWorks.vbproj 檔案。
如果您看見 [偵測到檔案修改] 對話方塊 (如下圖所示),請按一下 [重新載入] 按鈕。
在下列程序中,您會指定資料庫指令碼不應該執行。 這包括針對 ApplicationServices 資料庫自動產生的指令碼以及 AdventureWorksGrant.sql 指令碼。
若要指定其他指令碼不應該在部署期間執行
在專案 [屬性] 頁面上,按一下 [封裝/發行 SQL] 索引標籤。
在 [組態] 清單中,確定已選取 [使用中 (偵錯)]。
在 [資料庫項目] 方格中,確定已選取 [ApplicationServices-Deployment] 資料列。
在 [資料庫指令碼] 方格中,針對 [指令碼路徑] 資料行具有 [自動產生的結構描述和資料] 的資料列清除 [包含] 核取方塊,如下圖所示:
在 [資料庫項目] 方格中,選取 [AWLTConnectionString-Deployment] 資料列。
在 [資料庫指令碼] 方格中,針對具有 AdventureWorksGrant.sql 指令碼的資料列清除 [包含] 核取方塊。
儲存並關閉 [屬性] 頁面。
部署資料庫變更
在下列程序中,您會建立套件,然後使用 IIS 管理員將此套件匯入 IIS 中,藉以部署專案。
若要建立套件並將它匯入 IIS 中
按一下 [專案] 功能表中的 [建置部署套件]。
Visual Studio 會建置專案,然後建立部署套件。 系統會針對 AdventureWorksLT 資料庫建立包含 Drop 陳述式的指令碼。 但是不會針對 ApplicationServices 資料庫建立任何指令碼。
請依照下列步驟,將部署套件的路徑複製到 [Windows 剪貼簿]:
在 [方案總管] 中,如果您沒有看見 obj 資料夾,請按一下 [顯示所有檔案] 按鈕。
依序展開 obj 資料夾、Debug 資料夾和 Package 資料夾。
選取 AdventureWorks.zip 檔案。
在 [屬性] 視窗中,複製 [完整路徑] 欄位的值。
在 [Windows 控制台] 中,按一下 [系統管理工具],然後按一下 [Internet Information Services (IIS) 管理員]。
在 IIS 管理員的 [連線] 面板中,展開電腦的節點、展開 [站台] 資料夾,然後選取 [Default Web Site]。
在 [動作] 面板中,按一下 [匯入應用程式] 超連結。
在 [選取封裝] 對話方塊的 [封裝路徑] 方塊中,貼上部署套件路徑。
按 [下一步]。
在 [選取封裝的內容] 對話方塊中,按 [下一步]。
在 [輸入應用程式封裝資訊] 對話方塊中,按 [下一步]。
在 [覆寫現有檔案] 對話方塊中,按 [下一步]。
套件安裝完成之後,[安裝進度與摘要] 對話方塊就會顯示只更新了一個資料庫,如下圖所示:
開啟瀏覽器並移至下列 URL,藉以測試應用程式:
http://localhost/AdventureWorks
Default.aspx 頁面隨即顯示。 它看起來就像是您在 Visual Studio 中執行專案時所呈現的內容。 產品資料表會顯示 [Appearance] 資料行而非 [Color] 資料行。 這表示 AdventureWorksLT 資料庫變更已部署成功。
在未進行資料庫變更的情況下重新部署
資料庫結構的變更頻率通常低於 Web 應用程式的其他部分。 在本逐步解說的這個章節中,您會變更網頁並重新部署 Web 應用程式,但是不會部署資料庫變更。
在下列程序中,您會將 Default.aspx 頁面上 AdventureWorksLT 產品資料表中第一個資料行的標題從 [Name] 變更為 [Product]。
若要對應用程式進行變更
開啟 Default.aspx 檔案。
將 [Name] 資料行的 BoundField.HeaderText 屬性變更為 Product,如下列範例所示:
<asp:BoundField DataField="Name" HeaderText="Product" SortExpression="Name" />
儲存並關閉檔案。
在下列程序中,您會變更資料庫部署設定,以確定 Visual Studio 不會產生任何資料庫指令碼。
若要停用資料庫部署
在 [方案總管] 中,以滑鼠右鍵按一下專案,然後按一下 [內容]。
選取 [封裝/發行 Web] 索引標籤。
清除 [包含 [封裝/發行 SQL] 索引標籤中設定的所有資料庫] 核取方塊。
儲存並關閉 [屬性] 頁面。
在下列程序中,您會重新部署應用程式並測試變更。
若要重新部署並測試應用程式
按一下 [專案] 功能表中的 [建置部署套件]。
將部署套件路徑複製到 [Windows 剪貼簿]。
執行 [Internet Information Services (IIS) 管理員]。
在 IIS 管理員中,選取 [Default Web Site]。
在 [動作] 面板中,按一下 [匯入應用程式] 超連結。
在 [選取封裝] 對話方塊的 [封裝路徑] 方塊中,貼上部署套件路徑。
按 [下一步]。
在 [選取封裝的內容] 對話方塊中,按 [下一步]。
在 [輸入應用程式封裝資訊] 對話方塊中,按 [下一步]。
在 [覆寫現有檔案] 對話方塊中,按 [下一步]。
此時,[安裝進度與摘要] 對話方塊就會顯示沒有更新任何資料庫,而且只更新了一個檔案。
開啟瀏覽器並移至下列 URL,藉以測試應用程式:
http://localhost/AdventureWorks
Default.aspx 頁面看起來仍然像是您在 Visual Studio 中執行頁面時所呈現的內容。 產品資料表之第一個資料行中的標題 [Product] 就表示 Default.aspx 的變更已部署成功。
後續步驟
在本系列的第一個逐步解說中,您已將檔案系統 Web 應用程式專案部署至 IIS Web 應用程式,以便在開發電腦上進行測試。 在這個逐步解說中,您已變更其中一個資料庫的結構、變更網頁,並且部署變更。
本系列的下一個逐步解說是逐步解說:使用 Web 部署套件部署 Web 應用程式專案 (第 3 部分,共 4 部分)。 在該逐步解說中,您會建立可用來部署至開發用環境與實際執行伺服器的部署套件。