首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

.NET Web 應用程式安裝包製作實戰:SQL 資料庫部署的三種方案

     編輯:關於SqlServer

首次製作 Web 應用安裝包時,資料庫部署是核心難點。本文記錄完整流程與三種資料庫安裝方案的優劣比較。

安裝專案建立與檔案收集

  1. 在方案中新增「Web Setup Project」
  2. 於「檔案系統編輯器」中,將 Web 應用所有檔案拖入「Web Application Folder」
  3. 若需部署多個 Web 應用,可右鍵「Target Machine」→「Add Special Folder」→「Web Custom Folder」

新增 Web Setup Project 檔案系統編輯器 多 Web 應用資料夾

SQL 資料庫部署三種方案

方案一:自訂安裝類別

  • 新增 Installer Class,覆寫 Install 方法
  • 在 Install 中執行 SqlConnection + SqlCommand 執行建表/建資料腳本
  • 於安裝專案「自訂動作」→「Install」節點加入輸出項目
  • 優點:彈性高、可互動取得連線字串、支援複雜邏輯
  • 缺點:需撰寫 C# 程式碼、除錯較麻煩

方案二:SQL 腳本 + sqlcmd.exe

  • 準備 .sql 腳本檔 (含 GO 分批)
  • 自訂動作呼叫 sqlcmd.exe -S . -E -i script.sql
  • 優點:純 SQL 維護、DBA 易審核、支援大型腳本
  • 缺點:需目標機安裝 sqlcmd (SQL Server 隨附)、參數傳遞較繁瑣

方案三:專案輸出「SQL 資料庫腳本」

  • Visual Studio 專案屬性 → 「部署」→ 勾選「產生 SQL 腳本」
  • 建置時自動產生 CreateDatabase.sql、CreateTables.sql 等
  • 安裝專案包含這些腳本,自訂動作執行
  • 優點:與專案版本同步、零手工維護
  • 缺點:僅支援 SQL Server 專案類型、自訂種子資料需額外處理

實戰建議

  1. 連線字串收集:自訂安裝 UI (Installer Dialog) 讓使用者輸入 Server/Database/帳密,寫入 CustomActionData 傳給 Install 方法
  2. 冪等性:腳本加入 IF NOT EXISTS、IF EXISTS DROP,支援重裝/升級
  3. 交易保護:腳本以 BEGIN TRY...BEGIN CATCH...ROLLBACK 包裹,失敗自動回滾
  4. 權限最小化:安裝時僅需 db_ddladmin、db_datawriter,安裝完成建議降權
  5. 日誌記錄:msiexec /i setup.msi /l*v install.log 完整記錄供事後分析

綜合比較下,方案一 (自訂類別) 彈性最高,適合需互動配置的產品化安裝包;方案二 適合 DBA 主導、腳本獨立維護的企業內部部署;方案三 適合純開發主導、資料庫結構頻繁變更的敏捷專案。

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