共用方式為


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

作者 :Jason Lee

注意

自本文撰寫以來,ASP.NET 成員資格提供者已被 ASP.NET 身分識別取代。 強烈建議您更新應用程式以使用 ASP.NET 身分識別 平臺,而不是本文撰寫時精選的成員資格提供者。 ASP.NET 身分識別對於 ASP.NET 成員資格系統有一些優點,包括 :

  • 更好的效能
  • 改善擴充性和可測試性
  • 支援 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 更新成員資格資料庫架構

如果您在第一次部署之後修改成員資格資料庫的結構,您可能不想使用 Internet Information Services (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 成員資格資料庫而不包含使用者帳戶