使用 Visual Studio 或 Visual Web 開發人員部署具有 SQL Server Compact 的 ASP.NET Web 應用程式:移轉至 SQL Server - 10/12

作者 :Tom Dykstra

下載入門專案

本系列教學課程示範如何使用 Visual Studio 2012 RC 或 Visual Studio Express 2012 RC for Web,部署 (發佈) 包含 SQL Server Compact 資料庫的 ASP.NET Web 應用程式專案。 如果您安裝 Web 發佈更新,也可以使用 Visual Studio 2010。 如需系列簡介,請參閱 系列中的第一個教學課程。

如需示範 Visual Studio 2012 RC 版本之後引進的部署功能的教學課程,示範如何部署 SQL Server Compact 以外的 SQL Server 版本,並示範如何部署至 Azure App 服務 Web Apps,請參閱使用 Visual Studio ASP.NET Web 部署

概觀

本教學課程說明如何從 SQL Server Compact 移轉至 SQL Server。 您可能想要這麼做的其中一個原因是利用 SQL Server Compact 不支援的 SQL Server 功能,例如預存程式、觸發程式、檢視或復寫。 如需 SQL Server Compact 與 SQL Server 之間差異的詳細資訊,請參閱部署 SQL Server Compact 教學課程。

SQL Server Express 與開發的完整 SQL Server

一旦您決定升級至 SQL Server,您可能想要在開發和測試環境中使用 SQL Server 或 SQL Server Express。 除了工具支援和資料庫引擎功能的差異之外,SQL Server Compact 與其他版本 SQL Server 之間的提供者實作有所差異。 這些差異可能會導致相同的程式代碼產生不同的結果。 因此,如果您決定將 SQL Server Compact 保留為開發資料庫,您應該在每個部署至生產環境之前,先在測試環境中 SQL Server 或 SQL Server Express 徹底測試您的網站。

不同於 SQL Server Compact,SQL Server Express 基本上是相同的資料庫引擎,並使用與完整 SQL Server 相同的 .NET 提供者。 當您使用 SQL Server Express 進行測試時,您可以放心地取得與 SQL Server 相同的結果。 您可以使用大部分相同的資料庫工具搭配 SQL Server Express,SQL Server (值得注意的例外狀況 SQL Server Profiler) ,並支援預存程式、檢視、觸發程式和復寫等 SQL Server 的其他功能。 不過, (您通常必須在生產網站中使用完整 SQL Server。SQL Server Express 可以在共用裝載環境中執行,但並非針對該環境設計,而且許多裝載提供者不支援它。)

如果您使用 Visual Studio 2012,您通常會為開發環境選擇 SQL Server Express LocalDB,因為這是 Visual Studio 預設安裝的 。 不過,LocalDB 無法在 IIS 中運作,因此您必須在測試環境中使用 SQL Server 或 SQL Server Express。

結合資料庫與將它們分開

Contoso University 應用程式有兩個 SQL Server Compact 資料庫:成員資格資料庫 (aspnet.sdf) ,而應用程式資料庫 (School.sdf) 。 當您移轉時,您可以將這些資料庫移轉至兩個不同的資料庫或單一資料庫。 您可能想要合併它們,以協助應用程式資料庫與成員資格資料庫之間的資料庫聯結。 您的主控方案也可能提供結合它們的原因。 例如,裝載提供者可能會為多個資料庫收取更多費用,或甚至可能不允許多個資料庫。 這是本教學課程所使用的 Cytanium Lite 主控帳戶的情況,這隻允許單一 SQL Server 資料庫。

在本教學課程中,您將以這種方式移轉兩個資料庫:

  • 移轉至開發環境中的兩個 LocalDB 資料庫。
  • 遷移至測試環境中的兩個 SQL Server Express 資料庫。
  • 移轉至生產環境中一個合併的完整 SQL Server 資料庫。

提醒:如果您在進行教學課程時收到錯誤訊息或某些內容無法運作,請務必檢查 疑難解答頁面

安裝 SQL Server Express

SQL Server Express 預設會隨 Visual Studio 2010 自動安裝,但預設不會隨 Visual Studio 2012 一起安裝。 若要安裝 SQL Server 2012 Express,請按下列連結

選擇 ENU/x64/SQLEXPR_x64_ENU.exeENU/x86/SQLEXPR_x86_ENU.exe,然後在安裝精靈中接受預設設定。 如需安裝選項的詳細資訊,請參閱從安裝精靈安裝 SQL Server 2012 (安裝程式)

建立測試環境的 SQL Server Express 資料庫

下一個步驟是建立 ASP.NET 成員資格和學校資料庫。

從 [檢視] 功能表中,選取 [Visual Web Developer) 中的 [伺服器總管] ([資料庫總管],然後以滑鼠右鍵單擊 [數據 Connections],然後選取 [建立新的 SQL Server 資料庫]。

Selecting_Create_New_SQL_Server_Database

在 [建立新 SQL Server 資料庫] 對話框中,於 [伺服器名稱] 方塊中輸入 “.\SQLExpress”,然後在 [新增資料庫名稱] 方塊中輸入 “aspnet-Test”,然後按兩下 [確定]。

Create_New_SQL_Server_Database_aspnet

請遵循相同的程式來建立名為 「School-Test」 的新 SQL Server Express School 資料庫。

(您要將「測試」附加至這些資料庫名稱,因為稍後您將為每個資料庫建立額外的實例以供開發環境使用,而且您必須能夠區分這兩組資料庫。)

伺服器總 管現在會顯示兩個新的資料庫。

New_databases_in_Server_Explorer

建立新資料庫的授與腳本

當應用程式在開發電腦上的 IIS 中執行時,應用程式會使用預設應用程式集區的認證來存取資料庫。 不過,根據預設,應用程式集區身分識別沒有開啟資料庫的許可權。 因此,您必須執行腳本來授與該許可權。 在本節中,您會建立稍後將執行的腳本,以確保應用程式可以在 IIS 中執行時開啟資料庫。

在您在部署至生產環境教學課程中建立的解決方案SolutionFiles資料夾中,建立名為 Grant.sql的新 SQL 檔案。 將下列 SQL 命令複製到檔案中,然後儲存並關閉檔案:

IF NOT EXISTS (SELECT name FROM sys.server_principals WHERE name = 'IIS APPPOOL\DefaultAppPool')
BEGIN
    CREATE LOGIN [IIS APPPOOL\DefaultAppPool] 
      FROM WINDOWS WITH DEFAULT_DATABASE=[master], 
      DEFAULT_LANGUAGE=[us_english]
END
GO
CREATE USER [ContosoUniversityUser] 
  FOR LOGIN [IIS APPPOOL\DefaultAppPool]
GO
EXEC sp_addrolemember 'db_owner', 'ContosoUniversityUser'
GO

注意

此腳本的設計目的是要與 SQL Server 2008 搭配 Windows 7 中的 IIS 設定搭配使用,如本教學課程中所指定。 如果您使用不同版本的 SQL Server 或 Windows,或以不同的方式在電腦上設定 IIS,可能需要變更此腳本。 如需 SQL Server 腳本的詳細資訊,請參閱《在線叢書》SQL Server

注意

安全性注意事項 此腳本會為在運行時間存取資料庫的使用者提供db_owner許可權,這是您在生產環境中擁有的許可權。 在某些情況下,您可能想要指定只有部署的完整資料庫架構更新許可權的使用者,並針對運行時間指定只有讀取和寫入數據許可權的不同使用者。 如需詳細資訊,請參閱部署至 IIS 作為測試環境中的檢閱自動 Web.config Code First 移轉 變更

設定測試環境的資料庫部署

接下來,您將設定 Visual Studio,以便針對每個資料庫執行下列工作:

  • 產生 SQL 腳本,以在目的地資料庫中建立源資料庫的結構 (數據表、數據行、條件約束等 ) 。
  • 產生 SQL 文稿,將源資料庫的數據插入目的地資料庫中的數據表。
  • 執行產生的腳本,以及您在目的地資料庫中建立的 Grant 腳本。

開啟 [ 項目屬性 ] 視窗,然後選取 [ 封裝/發佈 SQL] 索引標籤。

確定已在 [組] 下拉式清單中選取 [作用中 (發行) ] 或 [發行]。

按兩下 [啟用此頁面]。

Package_Publish_SQL_tab_Enable_This_page

通常停用 [封裝/發佈 SQL ] 索引標籤,因為它會指定舊版部署方法。 在大部分情況下,您應該在 [發佈 Web 精靈] 中設定資料庫部署。 從 SQL Server Compact 移轉至 SQL Server 或 SQL Server Express 是一個適合這個方法的特殊案例。

按兩下 [從 Web.config匯入]。

Selecting_Import_from_Web.config

Visual Studio 會在 Web.config 檔案中尋找連接字串、尋找成員資格資料庫,另一個用於 School 資料庫,並新增對應至 [資料庫專案] 數據表中每個 連接字串 的數據列。 找到的連接字串適用於現有的 SQL Server Compact 資料庫,而下一個步驟是設定部署這些資料庫的方式和位置。

您可以在資料庫項目資料表下方的 [ 資料庫專案詳細資料 ] 區段中輸入 資料庫部署設定 。 [ 資料庫專案詳細 數據] 區段中所顯示的設定與選取 [ 資料庫專案 ] 數據表中的數據列有關,如下圖所示。

Database_Entry_Details_section_of_Package_Publish_SQL_tab

設定成員資格資料庫的部署設定

選取 [資料庫專案] 數據表中的 DefaultConnection-Deployment 數據列,以設定套用至成員資格資料庫的設定。

目的地資料庫的 [連接字串] 中,輸入指向新 SQL Server Express 成員資格資料庫的 連接字串。 您可以從 [伺服器總管] 取得所需的 連接字串。 在 [伺服器總管] 中,展開 [數據] Connections 並選取 aspnetTest 資料庫,然後從 [屬性] 視窗中複製 [連接字串] 值。

aspnet_connection_string_in_Server_Explorer

此處會重現相同的 連接字串:

Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False

將此 連接字串 複製並貼到 [封裝/發佈 SQL] 索引標籤中目的地資料庫的連接字串中。

請確定已選取 [從現有資料庫提取數據和/或架構 ]。 這就是導致 SQL 腳本自動產生並在目的地資料庫中執行的原因。

源資料庫的連接字串會從 Web.config 檔案擷取,並指向開發 SQL Server Compact 資料庫。 這是將用來產生稍後在目的地資料庫中執行的腳本的源資料庫。 由於您想要部署資料庫的生產版本,請將 “aspnet-Dev.sdf” 變更為 “aspnet-Prod.sdf”。

資料庫文本選項[僅限架構 ] 變更為 [ 架構和數據],因為您想要將數據 (複製到用戶帳戶和角色) 以及資料庫結構。

若要設定部署以執行您稍早建立的授與腳本,您必須將它們新增至 [資料庫腳本 ] 區段。 按兩下 [新增文稿],然後在 [ 新增 SQL 腳稿 ] 對話框中,流覽至您儲存授與腳本的資料夾, (這是包含方案檔的資料夾) 。 選取名為 Grant.sql 的檔案,然後按兩下 [ 開啟]。

Select_File_dialog_box_grant_script

[資料庫專案] 中 DefaultConnection-Deployment 數據列的設定現在看起來如下圖所示:

Database_Entry_Details_for_DefaultConnection_Test

設定學校資料庫的部署設定

接下來,選取 [資料庫專案] 數據表中的 [SchoolContext-Deployment] 數據列,以設定 School 資料庫的部署設定。

您可以使用稍早使用的相同方法來取得新 SQL Server Express 資料庫的 連接字串。 將此 連接字串 複製到 [封裝/發佈 SQL] 索引標籤中目的地資料庫的連接字串

Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False

請確定已選取 [從現有資料庫提取數據和/或架構 ]。

源資料庫的連接字串會從 Web.config 檔案中擷取,並指向開發 SQL Server Compact 資料庫。 將 「School-Dev.sdf」 變更為 「School-Prod.sdf」,以部署資料庫的生產版本。 (您從未在 App_Data 資料夾中建立School-Prod.sdf 檔案,因此您會將該檔案從測試環境複製到 ContosoUniversity 項目資料夾中的 App_Data資料夾。)

資料庫文稿選項 變更為 架構和數據

您也想要執行腳本,將此資料庫的讀取和寫入許可權授與應用程式集區身分識別,因此請新增 Grant.sql 腳本檔案,就像您為成員資格資料庫所做的一樣。

當您完成時,[資料庫專案] 中 SchoolContext-Deployment 數據列的設定看起來如下圖所示:

Database_Entry_Details_for_SchoolContext_Test

將變更儲存至 [ 封裝/發佈 SQL] 索引標籤。

School-Prod.sdf 檔案從 c:\inetpub\wwwroot\ContosoUniversity\App_Data 資料夾複製到 ContosoUniversity 專案中 的 App_Data 資料夾。

指定授與腳本的交易模式

部署程式會產生腳本來部署資料庫架構和數據。 根據預設,這些腳本會在交易中執行。 不過,自定義腳本 (預設不會在交易中執行,例如授與腳本) 。 如果部署程式混合交易模式,當腳本在部署期間執行時,您可能會收到逾時錯誤。 在本節中,您會編輯項目檔,以設定在交易中執行的自定義腳本。

方案總管 中,以滑鼠右鍵按兩下 ContosoUniversity 專案,然後選取 [卸除專案]。

Unload_Project_in_Solution_Explorer

然後再次以滑鼠右鍵按兩下專案,然後選取 [編輯 ContosoUniversity.csproj]。

Edit_Project_in_Solution_Explorer

Visual Studio 編輯器會顯示項目檔的 XML 內容。 請注意,有數 PropertyGroup 個元素。 (在影像中,已省略元素的內容 PropertyGroup 。)

專案檔編輯器視窗

第一個沒有 Condition 屬性的設定適用於不論組建組態為何的設定。 一個 PropertyGroup 元素只適用於偵錯組建組態, (請注意 Condition 屬性) ,一個只適用於發行組建組態,另一個則僅適用於測試組建組態。 在 PropertyGroup 發行組建組態的 元素內,您會看到 PublishDatabaseSettings 元素,其中包含您在 [ 封裝/發佈 SQL ] 索引標籤上輸入的設定。有一個 Object 元素會對應至您指定的每個授與腳本, (請注意“Grant.sql”) 的兩個實例。 根據預設, Transacted 每個授與文稿的 Source 元素屬性為 False

Transacted_false

Transacted 項目的 屬性值 Source 變更為 True

Transacted_true

儲存並關閉項目檔,然後在 方案總管 中以滑鼠右鍵按兩下專案,然後選取 [重載專案]。

Reload_project

設定連接字串的 Web.Config 轉換

Web Deploy 只會在部署期間更新目的地資料庫,使用您在 [封裝/發佈 SQL ] 索引標籤上輸入之新 SQL Express 資料庫的連接字串。 您仍然需要設定 Web.config 轉換,讓已部署 Web.config 檔案中的連接字串指向新的 SQL Server Express 資料庫。 (當您使用 [封裝/發佈 SQL ] 索引標籤時,您無法在發行配置檔中設定連接字串。)

開啟 Web.Test.config ,並將 元素取代 connectionStringsconnectionStrings 下列範例中的 專案。 (請確定您只複製 connectionStrings 元素,而不是此處顯示的周圍程序代碼,以提供 context.)

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="SchoolContext" 
         connectionString="Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
  <!-- appSettings element, comments, and system.web element -->
</configuration>

此程式代碼會在connectionString已部署的Web.config 檔案中取代每個add專案的 和 providerName 屬性。 這些連接字串與您在 [封裝/發佈 SQL] 索引標籤中輸入的連接字串不同。已將 「MultipleActiveResultSets=True」 設定新增至它們,因為 Entity Framework 和 Universal Providers 需要此設定。

安裝 SQL Server Compact

SqlServerCompact NuGet 套件提供 Contoso University 應用程式的 SQL Server Compact 資料庫引擎元件。 但現在它不是應用程式,而是 Web Deploy,必須能夠讀取 SQL Server Compact 資料庫,才能建立腳本以在 SQL Server 資料庫中執行。 若要讓 Web Deploy 讀取 SQL Server Compact 資料庫,請使用下列連結在開發電腦上安裝 SQL Server Compact:Microsoft SQL Server Compact 4.0 SP1

部署至測試環境

若要發佈至測試環境,您必須建立已設定為使用 [ 封裝/發佈 SQL ] 索引卷標進行資料庫發行的發行配置檔,而不是發行配置檔資料庫設定。

首先,刪除現有的測試配置檔。

方案總管 中,以滑鼠右鍵按兩下 ContosoUniversity 項目,然後按兩下 [發佈]。

選取 [ 配置檔] 索引 標籤。

按一下 [管理設定檔]

選取 [測試],按兩下 [ 移除],然後按兩下 [ 關閉]。

關閉 [ 發佈 Web 精靈] 以儲存這項變更。

接下來,建立新的測試配置檔,並用它來發佈專案。

方案總管 中,以滑鼠右鍵按兩下 ContosoUniversity 項目,然後按兩下 [發佈]。

選取 [ 配置檔] 索引 標籤。

從下拉式清單中選取 <[新增...> ],然後輸入 “Test” 作為配置檔名稱。

在 [ 服務 URL] 方塊中,輸入 localhost

在 [ 月臺/應用程式 ] 方塊中,輸入 默認網站/ContosoUniversity

在 [ 目的地 URL] 方塊中,輸入 http://localhost/ContosoUniversity/

按一下 [下一步]。

[ 設定 ] 索引標籤會警告您已設定 [封裝/發佈 SQL ] 索引標籤,而且您可以按兩下 [啟用新的資料庫發佈改進] 來覆寫它們。 針對此部署,您不想覆寫 [封裝/發佈 SQL ] 索引標籤設定,因此只要按 [ 下一步] 即可。

Publish_Web_wizard_Settings_tab_Migrate

[預覽] 索引標籤上的訊息表示 [沒有資料庫] 已選取發佈,但這隻是表示未在發行配置檔中設定資料庫發行。

按一下 [發佈]。

Publish_Web_wizard_Preview_tab_Migrate

Visual Studio 會部署應用程式,並將瀏覽器開啟至測試環境中的網站首頁。 執行 Instructors 頁面,以查看它顯示您稍早看到的相同數據。 執行 [ 新增學生 ] 頁面、新增學生,然後在 [ 學生 ] 頁面中檢視新學生。 這會驗證您可以更新資料庫。 選取 [ 更新點數 ] 頁面, (您必須登入) ,以確認已部署成員資格資料庫,且您可以存取該資料庫。

建立生產環境的 SQL Server 資料庫

既然您已部署至測試環境,您就可以開始設定部署至生產環境。 您一開始會建立要部署的資料庫,就像測試環境所做的一樣。 如您回想一下概觀,Cytanium Lite 主控方案只允許單一 SQL Server 資料庫,因此您只會設定一個資料庫,而不是兩個資料庫。 成員資格和 School SQL Server Compact 資料庫中的所有數據表和數據都會部署到生產環境中一個 SQL Server 資料庫。

移至 的 Cytanium 控制面板 http://panel.cytanium.com。 將滑鼠停留在 [資料庫] 上方,然後按兩下 [SQL Server 2008]。

Selecting_Databases_in_Control_Panel

[SQL Server 2008] 頁面中,按兩下 [建立資料庫]。

Selecting_Create_Database

將資料庫命名為 「School」,然後按兩下 [ 儲存]。 (頁面會自動新增前置詞 「contosou」,因此有效名稱會是 「contosouSchool」.)

Naming_the_database

在相同的頁面上,按兩下 [ 建立使用者]。 在 Cytanium 的伺服器上,而不是使用整合式 Windows 安全性,並讓應用程式集區身分識別開啟您的資料庫,您將建立有權開啟資料庫的使用者。 您會將使用者的認證新增至進入生產 Web.config 檔案中的連接字串。 在此步驟中,您會建立這些認證。

Creating_a_database_user

[SQL 使用者屬性 ] 頁面中填入必要的欄位:

  • 輸入 「ContosoUniversityUser」 作為名稱。
  • 輸入密碼。
  • 選取 contosouSchool 作為預設資料庫。
  • 選取 [contosouSchool ] 複選框。

SQL_User_Properties_page

設定生產環境的資料庫部署

現在您已準備好在 [ 封裝/發佈 SQL ] 索引標籤中設定資料庫部署設定,如同您先前針對測試環境所做的一樣。

開啟 [項目屬性] 視窗,選取 [封裝/發佈 SQL] 索引標籤,並確定已在 [組] 下拉式清單中選取 [作用中 (發行) 發行]。

當您為每個資料庫設定部署設定時,生產環境與測試環境執行作業之間的主要差異在於設定連接字串的方式。 針對您輸入不同的目的地資料庫連接字串的測試環境,但針對生產環境,目的地 連接字串 兩個資料庫都會相同。 這是因為您要將這兩個資料庫部署至生產環境中一個資料庫。

設定成員資格資料庫的部署設定

若要設定套用至成員資格資料庫的設定,請選取 [資料庫專案] 數據表中的 DefaultConnection-Deployment 數據列。

目的地資料庫的 [連接字串] 中,輸入指向您剛才建立之新生產 SQL Server 資料庫的 連接字串。 您可以從歡迎電子郵件取得 連接字串。 電子郵件的相關部分包含下列範例 連接字串:

Data Source=vserver01.cytanium.com;Initial Catalog={myDataBase};User Id={myUsername};Password={myPassword};

取代三個變數之後,您需要 連接字串 如下所示:

Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;

將此 連接字串 複製並貼到 [封裝/發佈 SQL] 索引標籤中目的地資料庫的連接字串中。

請確定仍選取 [從現有資料庫提取數據和/或架構 ],且 [資料庫腳本] 選項 仍為 [架構與數據]。

在 [ 資料庫腳本 ] 方塊中,清除Grant.sql腳本旁的複選框。

Disable_Grant_script

設定學校資料庫的部署設定

接下來,選取 [資料庫專案] 數據表中的 [SchoolContext-Deployment] 數據列,以設定 School 資料庫設定。

將相同的 連接字串 複製到您複製到成員資格資料庫的該欄位中的目的地資料庫的連接字串

請確定仍選取 [從現有資料庫提取數據和/或架構 ],且 [資料庫腳本] 選項 仍為 [架構與數據]。

在 [ 資料庫腳本 ] 方塊中,清除Grant.sql腳本旁的複選框。

將變更儲存至 [ 封裝/發佈 SQL] 索引標籤。

為生產資料庫的連接字串設定 Web.Config 轉換

接下來,您將設定 Web.config 轉換,讓已部署 Web.config 檔案中的連接字串指向新的生產資料庫。 您在 [Web Deploy 要使用的套件/發佈 SQL] 索引標籤上輸入的 連接字串,與應用程式需要使用的相同,但新增 MultipleResultSets 選項除外。

開啟 Web.Production.config,並將 元素connectionStrings取代connectionStrings為類似下列範例的 元素。 (僅複製 connectionStrings 元素,而不是提供來顯示context.) 的周圍標籤

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="SchoolContext" 
         connectionString="Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
  <!-- appSettings element, comments, and system.web element -->
</configuration>

您有時會看到建議,告知您一律加密 Web.config 檔案中的連接字串。 如果您要部署至您自己公司網路上的伺服器,這可能很適合。 不過,當您部署至共用主機環境時,您會信任裝載提供者的安全性做法,而且不需要或實際地加密連接字串。

部署至生產環境

現在您已準備好部署至生產環境。 Web Deploy 會讀取您專案App_Data資料夾中的 SQL Server Compact 資料庫,並在生產 SQL Server 資料庫中重新建立其所有數據表和數據。 若要使用 [套件/發佈 Web] 索引標籤設定進行發佈,您必須為生產環境建立新的發行配置檔。

首先,刪除您稍早執行測試配置檔的現有生產配置檔。

方案總管 中,以滑鼠右鍵按兩下 ContosoUniversity 項目,然後按兩下 [發佈]。

選取 [ 配置檔] 索引 標籤。

按一下 [管理設定檔]

選取 [生產],按兩下 [ 移除],然後按兩下 [ 關閉]。

關閉 [ 發佈 Web 精靈] 以儲存這項變更。

接下來,建立新的生產配置檔,並用它來發佈專案。

方案總管 中,以滑鼠右鍵按兩下 ContosoUniversity 項目,然後按兩下 [發佈]。

選取 [ 配置檔] 索引 標籤。

按兩下 [ 入],然後選取您稍早下載的 .publishsettings 檔案。

在 [ 連線] 索引標籤上,將 [目的地 URL ] 變更為正確的暫存 URL,在此範例中為 http://contosouniversity.com.vserver01.cytanium.com

將配置檔重新命名為 Production。 (選取 [ 配置檔] 索引 標籤,然後按兩下 [ 管理配置檔 ] 來執行該) 。

關閉 [ 發佈 Web 精靈] 以儲存變更。

在生產環境中更新資料庫的實際應用程式中,您現在會在發佈之前執行兩個額外的步驟:

  1. 上傳 app_offline.htm,如 部署至生產環境 教學課程所示。
  2. 使用 Cytanium 控制面板的 [ 檔案管理員 ] 功能,將 aspnet-Prod.sdfSchool-Prod.sdf 檔案從生產網站複製到 ContosoUniversity 專案的 App_Data 資料夾。 這可確保您要部署到新 SQL Server 資料庫的數據包含生產網站所做的最新更新。

[Web One Click Publish ] 工具列中,確定已選取 [生產 ] 配置檔,然後按兩下 [ 發佈]。

如果您在發佈之前上傳 app_offline.htm ,則必須使用 Cytanium 控制面板中的 [檔案管理員 ] 公用程式來刪除 app_offline。測試前的 htm。 您也可以同時從 App_Data 資料夾刪除 .sdf 檔案。

您現在可以開啟瀏覽器,並移至公用網站的URL,以您在部署至測試環境之後所做的相同方式測試應用程式。

切換至開發中的 SQL Server Express LocalDB

如概觀中所述,在開發和生產環境中,最好使用與您在測試和生產環境中所使用的相同資料庫引擎。 (請記住,在開發中使用 SQL Server Express 的優點是,資料庫會在開發、測試和生產環境中運作相同。) 在本節中,您會設定 ContosoUniversity 專案,以在從 Visual Studio 執行應用程式時使用 SQL Server Express LocalDB。

執行此移轉最簡單的方式是讓 Code First 和成員資格系統為您建立這兩個新的開發資料庫。 使用此方法進行移轉需要三個步驟:

  1. 變更連接字串以指定新的 SQL Express LocalDB 資料庫。
  2. 執行網站管理工具以建立系統管理員使用者。 這會建立成員資格資料庫。
  3. 使用 Code First 移轉 update-database 命令來建立和植入應用程式資料庫。

更新 Web.config 檔案中的連接字串

開啟 Web.config 檔案,並以下列程式代碼取代 connectionStrings 元素:

<connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-Dev.mdf;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
  <add name="SchoolContext" connectionString="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\School-Dev.mdf;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
</connectionStrings>

建立成員資格資料庫

[方案總管] 中,選取 [ContosoUniversity] 專案,然後按兩下 [專案] 功能表中的 [ASP.NET 組態]。

選取 [安全性] 索引標籤。

按兩下 [建立或管理角色],然後建立 系統管理員 角色。

返回 [安全性] 索引標籤。

按兩下 [建立使用者],然後選取 [ 系統管理員] 複選框,然後建立名為 admin 的使用者。

關閉 [網站管理工具]。

建立學校資料庫

開啟 [套件管理員主控台] 視窗。

在 [ 默認專案 ] 下拉式清單中,選取 ContosoUniversity.DAL 專案。

輸入下列命令:

update-database

Code First 移轉 會套用建立資料庫的初始移轉,然後套用 AddBirthDate 移轉,然後執行 Seed 方法。

按 Control-F5 執行月臺。 如同您針對測試和生產環境所做的一樣,請執行 [ 新增學生 ] 頁面、新增學生,然後在 [ 學生 ] 頁面中檢視新的學生。 這會驗證已建立並初始化 School 資料庫,而且您具有其讀取和寫入存取權。

選取 [ 更新點數 ] 頁面並登入,以確認已部署成員資格資料庫,且您可以存取該資料庫。 如果您未移轉用戶帳戶,請建立系統管理員帳戶,然後選取 [ 更新點數 ] 頁面以確認其運作正常。

清除 SQL Server Compact 檔案

您不再需要包含以支援 SQL Server Compact 的檔案和 NuGet 套件。 如果您想要 (不需要此步驟) ,您可以清除不需要的檔案和參考。

方案總管 中,從 App_Data資料夾刪除 .sdf 檔案,並從 bin 資料夾中刪除 amd64x86 資料夾。

方案總管 中,以滑鼠右鍵按兩下方案 (不是其中一個專案) ,然後按兩下 [管理方案的 NuGet 套件]。

在 [ 管理 NuGet 套件 ] 對話框的左窗格中,選取 [ 已安裝的套件]。

選取 EntityFramework.SqlServerCompact 套件,然後按兩下 [ 管理]。

在 [ 選取專案 ] 對話框中,會選取這兩個專案。 若要在這兩個專案中卸載套件,請清除這兩個複選框,然後按兩下 [ 確定]。

在詢問您是否也要卸載相依套件的對話框中,按兩下 [否]。 其中一個是您必須保留的 Entity Framework 套件。

請遵循相同的程式來卸載 SqlServerCompact 套件。 (必須依此順序卸載套件,因為 EntityFramework.SqlServerCompact 套件相依於 SqlServerCompact 套件。)

您現在已成功移轉至 SQL Server Express 和完整 SQL Server。 在下一個教學課程中,您將進行另一個資料庫變更,並瞭解如何在測試和生產資料庫使用 SQL Server Express 和完整 SQL Server 時部署資料庫變更。