首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET Membership 資料庫腳本生成指南:使用 aspnet_regsql.exe 匯出完整建表 SQL

     編輯:ASP.NET 基礎

場景:需要完整控制 Membership 資料庫結構

ASP.NET Membership 預設使用 aspnetdb.mdf(SQL Express 附加資料庫),但在正式環境常需:

  • 將 Membership 表建立在既有業務資料庫(如 Northwind)中。
  • 納入版本控管,隨專案部署腳本一併執行。
  • 自訂資料表前綴、Schema、檔案群組等進階選項。

GUI 精靈 (aspnet_regsql.exe 無參數啟動) 無法滿足上述需求,命令列模式才是正解。

核心命令:一次匯出完整建表腳本

aspnet_regsql.exe -E -S localhost -d Northwind -A all -sqlexportonly c:\membership.sql

參數詳細說明

參數含義備註
-E使用 Windows 整合驗證生產環境建議改用 -U/-P 指定 SQL 登入
-S localhost目標 SQL Server 執行個體可為 IP、機器名、.\SQLEXPRESS 等
-d Northwind目標資料庫名稱資料庫必須已存在
-A all安裝所有功能包含 Membership、Role、Profile、Personalization、WebEvent、SqlCacheDependency
-sqlexportonly關鍵:僅匯出 SQL 腳本,不實際執行輸出檔案路徑緊隨其後
c:\membership.sql輸出檔案完整路徑確保寫入權限

常用變體與進階選項

僅安裝 Membership 與 Role(輕量模式)

aspnet_regsql.exe -E -S .\SQL2019 -d MyAppDb -A mr -sqlexportonly membership_role.sql

-A 可組合:m(Membership) r(Role) p(Profile) c(Personalization) w(WebEvent) s(SqlCacheDependency)。

指定自訂 Schema 與資料表前綴

aspnet_regsql.exe -E -S localhost -d MyDb -A all -sqlexportonly custom.sql
# 輸出腳本中預設 Schema 為 dbo,表名為 aspnet_*
# 若需自訂,需事後手動修改腳本或使用 SMO 程式化重命名

工具本身不支援直接指定 Schema/前綴,匯出後以 REPLACE 或正則批次修改是常見做法。

移除已安裝功能(清理腳本)

aspnet_regsql.exe -E -S localhost -d Northwind -R all -sqlexportonly drop_membership.sql

-R 為移除操作,配合 -sqlexportonly 可生成 DROP TABLE/DROP PROC 腳本,便於版本回滾。

驗證腳本正確性

  1. 在測試資料庫執行生成的 .sql。
  2. 執行 SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'aspnet_%' 確認 10 張核心表 + 視圖 + 預存程序。
  3. 檢查 aspnet_SchemaVersions 表,確認版本號與 .NET Framework 版本對應(如 1, 1, 11425, 1 對應 4.x)。

官方文件與延伸閱讀

遷移提示:ASP.NET Core Identity 時代的選擇

若專案為新開發或正在遷移至 ASP.NET Core,建議直接採用 ASP.NET Core Identity,其 EF Core Migrations 機制原生支援程式碼優先、跨資料庫、無縫整合 DI 容器,避免維護舊版 Membership 的存儲過程與資料表結構。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved