共用方式為


將成員資格資料庫部署到企業環境

演講者:Jason Lee

注意

自本文撰寫以來,ASP.NET 成員資格提供者已由 ASP.NET Identity 取代。 我們強烈建議更新應用程式以使用 ASP.NET Identity 平台,而不是撰寫本文時介紹的成員資格提供者。 與 ASP.NET 成員資格系統相比,ASP.NET Identity 具有許多優勢,包括:

  • 更好的效能
  • 改進的可擴展性和可測試性
  • 支援 OAuth、OpenID Connect 和雙重認證
  • 基於宣告的身分支援
  • 與 ASP.Net Core 更好的互通性

本主題介紹了在測試、預備或生產環境中佈建 ASP.NET 應用程式服務資料庫 (通常稱為成員資格資料庫) 時需要克服的關鍵注意事項和挑戰。 它還描述了您可以用來應對這些挑戰的方法。

本主題構成一系列教學課程的一部分,該系列教學課程圍繞著一家名為 Fabrikam, Inc. 的虛構公司的企業部署要求。本教學課程系列使用範例解決方案 (連絡人管理員解決方案) 來表示具有實際複雜程度的 Web 應用程式,包括 ASP.NET MVC 3 應用程式、Windows Communication Foundation (WCF) 服務和資料庫專案。

這些教學課程的核心部署方法是基於「了解專案檔案」中所述的分割專案檔案方法,其中建置程序由兩個專案檔案控制 - 一個包含適用於每個目標環境的建置指令,以及一個包含特定於環境的建置和部署設定。 在建置時,環境專屬的專案檔案被合併到與環境無關的專案檔案中,以形成完整的建置指令集。

部署成員資格資料庫時會遇到哪些問題?

大多數情況下,當您設計資料庫的部署策略時,您首先需要考慮的是要部署哪些資料。 在開發或測試環境中,您可能想要部署使用者帳戶資料以促進快速、輕鬆的測試。 在預備或生產環境中,您不太可能想要部署使用者帳戶資料。

不幸的是,ASP.NET 成員資格資料庫引入了一些特定的挑戰,使這項決策更加複雜:

  • 僅結構描述部署將使成員資格資料庫處於非操作狀態。 這是因為成員資格資料庫包含資料庫執行所需的一些設定資料 (在 aspnet_SchemaVersions 表中)。 因此,如果您對成員資格資料庫執行僅結構描述部署以排除使用者帳戶資料,則需要執行部署後指令碼來新增基本設定資料。
  • 根據您的成員資格資格資料庫的設定方式,成員資格資格提供者可能會使用機器密鑰來加密密碼並將其儲存在資料庫中。 在這種情況下,您使用資料庫部署的任何使用者帳戶資料將在目標伺服器上變得不可用。 因此,不支援部署使用者帳戶資料。

選擇成員資格資料庫策略

當您選擇如何在企業伺服器環境中佈建成員資格資料庫時,請使用下列準則:

  • 只要有可能,就不要部署成員資料庫。 相反,請在目標資料庫伺服器上手動建立成員資格資料庫。 如果您尚未自訂成員資格資料庫結構描述,則只需使用 ASP.NET SQL Server 註冊工具 (aspnet_regsql.exe) 在目標位置建立一個新的資料庫架構即可。
  • 如果您別無選擇,只能部署成員資格資料庫 (例如,如果您對資料庫結構描述進行了大量修改),則應執行成員資格資料庫的僅架構部署,以排除使用者帳戶資料,然後執行用於新增任何所需設定資料的部署後指令碼。 您可以在「如何:在不包括使用者帳戶的情況下部署 ASP.NET 成員資格資料庫」中找到更多有關這些方法的指引。

重要的是要記住,您的成員資格資料庫的結構描述可能是相當靜態的。 即使您已經自訂了成員資格資料庫,您也不太可能需要定期更新結構描述,它的變更頻率不會與 Web 應用程式或資料庫專案中的程式碼相同。 因此,您不需要將成員資格資料庫包含在任何自動化或單步部署流程中。

使用 VSDBCMD 更新成員資格資料庫結構描述

如果您在首次部署後修改會員資格資料庫的結構,您可能不希望使用網際網路資訊服務 (IIS) Web 部署工具 (Web Deploy) 重新部署資料庫。 Web Deploy 中的資料庫部署功能不包括對目標資料庫進行差異更新的功能,相反,Web Deploy 必須刪除並重新建立資料庫。 這代表您會丟失任何現有的使用者帳戶資料,這在預備或生產環境中通常是不受歡迎的。

另一種方法是使用 VSDBCMD 公用程式更新目標資料庫的結構描述。 VSDBCMD 包括兩個重要的功能。 首先,它可以將現有資料庫的結構描述匯入到 .dbschema 檔案中。 其次,它可以將 .dbschema 檔案作為差異更新部署到現有資料庫,這代表它只進行使目標資料庫保持最新所需的更改,並且不會遺失任何資料。

您可以使用下列進階步驟來更新成員資格資料庫結構描述:

  1. 使用 VSDBCMD 匯入動作為來源成員資格資料庫產生 .dbschema 檔案。 「作法:從命令提示字元匯入結構描述」中描述了此程序。
  2. 使用 VSDBCMD 部署動作會將 .dbschema 檔案部署到目標成員資格資料庫。 VSDBCMD.EXE 的命令列參考 (部署和結構描述匯入) 中描述了此程序。

結論

本主題描述了當您需要在各種目標環境中佈建 ASP.NET 成員資格資料庫時可能面臨的一些挑戰。 特別是,它解釋了為什麼僅結構描述部署將使成員資料庫處於非操作狀態以及為什麼不支援部署使用者帳戶資料。 該主題還提供了有關如何在不同情境中佈建、部署和更新成員資格資料庫的指南。

深入閱讀

有關如何使用 VSDBCMD 的更多指南和範例,請參閱「VSDBCMD.EXE 的命令列參考 (部署和結構描述匯入)」和「如何:從命令提示字元匯入結構描述」。 有關使用 aspnet_regsql.exe 建立成員資格資料庫的詳細資訊,請參閱「ASP.NET SQL Server 註冊工具 (aspnet_regsql.exe)」。 有關部署成員資格資料庫的更多一般指南,請參閱「作法:在不包括使用者帳戶的情況下部署 ASP.NET 成員資格資料庫」。