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

PowerDesigner 導出 SQL Server 腳本缺少主鍵問題解決:逆向工程修正法

     編輯:關於SqlServer

使用 PowerDesigner (PD) 導出 SQL Server 2000 建表腳本時,常發現主鍵與自增屬性遺失。主因在於 PD 產生的腳本未正確標註 IDENTITY 與 PRIMARY KEY 約束。本文提供「逆向工程修正法」:先由資料庫匯出標準腳本,修正後再導入 PD,確保模型與資料庫定義一致。

問題現象

PD 直接導出的腳本:

CREATE TABLE T_SA_FIELD (
    SAFIELDRECID INT NULL,      -- 應為主鍵自增
    SARECID INT NULL,
    FIELDNAME VARCHAR(100) NULL,
    FIELDTYPE DECIMAL NULL
)

缺少 IDENTITY(1,1)、PRIMARY KEY 約束與 ON [PRIMARY] 檔案群組指定。

正確腳本範本

IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE ID = OBJECT_ID('DBO.T_SA_FIELD') AND TYPE = 'U')
    DROP TABLE DBO.T_SA_FIELD
GO

CREATE TABLE DBO.T_SA_FIELD (
    SAFIELDRECID INT IDENTITY(1, 1),
    SARECID INT NULL,
    FIELDNAME VARCHAR(1000) NULL,
    CONSTRAINT PK_T_SA_FIELD PRIMARY KEY (SAFIELDRECID) ON [PRIMARY]
) ON [PRIMARY]
GO

逆向工程修正步驟

  1. 在 SSMS 右鍵資料庫 → 「工作」→ 「產生指令碼」,勾選「包含主鍵/索引/觸發器」等,匯出完整 .sql 檔。
  2. 開啟 PD,選擇 File → Reverse Engineer → Database,指向上述 .sql 檔。
  3. PD 解析腳本建立實體模型(PDM),此時主鍵、自增、預設值、檔案群組皆正確識別。
  4. 如需調整,直接在 PDM 編輯,再 Generate Database 產出標準腳本。

關鍵差異對照

項目PD 直接導出逆向工程修正後
主鍵欄位INT NULLINT IDENTITY(1,1)
主鍵約束無CONSTRAINT PK_... PRIMARY KEY
擁有者前綴無(T_SA_FIELD)DBO.T_SA_FIELD
檔案群組無ON [PRIMARY]

進階技巧

  • 範本自訂:PD 支援修改「Database Generation」範本,若專案長期維護,建議一次調整範本,後續導出自動正確。
  • 版本控管:將修正後的 .sql 納入 Git,PDM 檔亦納入版控,確保模型與腳本同步演進。
  • 跨版本遷移:同樣適用於 SQL Server 2005/2008/2012+,只需在產生指令碼時選擇目標版本。

常見誤區

❌ 直接手動修改 PD 導出腳本 → 易遺漏、難維護、模型與腳本脫節。
✅ 以資料庫真實定義為準,逆向回 PD → 模型永遠與實體同步。

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