PowerDesigner (PD) 強大的逆向工程 功能可將現有 SQL Server 資料庫結構匯入為實體模型 (PDM),支援後續文件產生、版本比較、腳本產出等。本文以 PD 16.5 為例,詳細記錄 ODBC 連線建立至模型匯入全流程。
前置準備
- 已安裝 SQL Server Native Client / ODBC Driver 11/13/17+
- 目標 SQL Server 允許遠端連線 (TCP/IP 啟用、防火牆開放 1433)
- 具備資料庫
VIEW DEFINITION 或 db_owner 權限
步驟 1~5:建立系統 DSN (資料來源名稱)
- PD 選單 Database → Configure Connections
- 點選 New → 選擇 System Data Source (需管理員權限)
- 選擇 SQL Server Native Client 11.0 或更新版本
- 輸入 Data Source Name (自訂)、Server (IP/主機名\\執行個體)
- 認證方式:SQL Server Authentication 輸入帳號密碼,或 Windows Authentication
- 點選 Test Connection 確認成功
步驟 6~9:逆向工程匯入模型
- 選單 File → Reverse Engineer → Database
- Model Name 輸入模型名稱,選擇 DBMS: SQL Server 2005/2008/2012/2016/2019 對應版本
- 連線下拉選擇剛建立的 DSN,輸入帳密 (若 DSN 未存密碼)
- 選擇目標 Database 與 Owner (通常 dbo)
- 勾選要匯入的 Tables / Views / Procedures (可全選)
- 點選 Execute 開始匯入
匯入完成驗證
PD 工作區將出現實體模型圖,包含資料表、欄位、索引、FK 關聯、檢查約束等完整結構。可進一步:
- 產生資料字典報表:
Tools → Generate Documentation
- 比較模型差異:
Tools → Compare Models (與另一 PDM 或即時資料庫)
- 正向產生 DDL:
Database → Generate Database
常見問題排查
| 現象 | 可能原因 | 解決方案 |
| DSN 測試失敗 | 驅動版本不符/防火牆/執行個體名錯誤 | 確認驅動版本、SQL Browser 服務啟用、執行個體名稱正確 |
| 匯入無資料表 | 權限不足/Schema 非 dbo | 授予 VIEW DEFINITION 或指定正確 Owner |
| 中文欄位名稱亂碼 | PD 字碼頁設定錯誤 | Tools → General Options → Model → Default code page = 950 (Big5) 或 65001 (UTF-8) |
| 大量資料表匯入緩慢 | 網路延遲/目錄查詢慢 | 在資料庫端建立統計資料、僅匯入必要 Schema |
進階技巧
- 命令列自動化:
pdshell.exe -r "ReverseEngineer('DSN=xxx;UID=yyy;PWD=zzz;DB=mydb')" 可納入 CI/CD 流程
- 增量逆向:匯入後僅對變更物件重新逆向,PD 會提示合併/覆蓋/忽略
- 邏輯/概念模型同步:PDM → LDM → CDM 逐層衍生,保持多層次文件一致