前言 以前用過一次PowerDesigner(后面都簡稱PD了),當(dāng)時還是用的11版本的PD,沒有深入研究,簡單的試用了一下。近來項目要用,同事已經(jīng)把數(shù)據(jù)庫設(shè)計好了,但是生成出來的數(shù)據(jù)庫表結(jié)構(gòu)確沒有注釋信息。研究幾個小時后終于試出來了,不知道搜索的方法不對還是確實沒有根據(jù)PD的名稱來生成數(shù)據(jù)庫注釋信息的文章。 環(huán)境 Sybase.PowerDesigner 12 漢化版 Microsoft SQL Server 2000 (sp3) 鳴謝 1. 如何讓PowerDesigner支持自動生成含SQL Server 2000的表和列注釋的角本 正文 這里從頭開始以貼圖附代碼的方式來完整的展示用PD生產(chǎn)SQL并生產(chǎn)數(shù)據(jù)庫表結(jié)構(gòu)的整個過程。 第一步: 新建自定義DBMS: 這里只是修改部分參數(shù),選擇拷貝自Micorsoft SQL SERVER 2000。然后如圖保存: 接著會彈出如下交互窗口: 第二步:修改關(guān)鍵特征樹,在 Script\Objects\Table\TableComment和Script\Objects\Column\ColumnComment位置的直修改如下: 表級注釋 EXECUTE sp_addextendedproperty N'MS_Description', N'%COMMENT%', N'user', N'%OWNER%', N'table', N'%TABLE%', NULL, NULL
列級注釋EXECUTE sp_addextendedproperty N'MS_Description', N'%Name%', N'user', N'%OWNER%', N'table', N'%TABLE%', N'column', N'%COLUMN%'
如圖:確定。 第三步:新的Physical Data Model(PDM),如下就不詳細(xì)接受只貼圖了: 注意:這里建表的時候最好選定所有者,沒有自己新建一個。 第四步:配置參數(shù),生成SQL 語句。工具欄(Tools)—>生成數(shù)據(jù)庫(Generate Database) 勾上以上復(fù)選框,否則當(dāng)你備注為空的時候注釋出不來;反之,如果你備注不為空那么名稱(Name)才能作為注釋出現(xiàn)!! ![]() 去掉上面User前面的勾,否則到時候生成SQL語句執(zhí)行的時候可能出現(xiàn)如下錯誤: 服務(wù)器: 消息 15181,級別 16,狀態(tài) 1,過程 sp_revokedbaccess,行 43
最后點確定生成,PD最終生成的SQL代碼如下:
無法除去數(shù)據(jù)庫所有者。 服務(wù)器: 消息 15007,級別 16,狀態(tài) 1,過程 sp_grantdbaccess,行 98 登錄 'dbo' 不存在。 /*==============================================================*/
如果你生成的SQL語句沒有之后面這幾條執(zhí)行sp_addextendedproperty的語句,那么本次你將不能生成帶注釋的SQL語句,請仔細(xì)檢查步驟及細(xì)節(jié)。/* DBMS name: SQL SERVER 2000 [EXT] */ /* Created on: 2008-2-28 2:49:38 */ /*==============================================================*/ if exists (select 1 from sysobjects where id = object_id('dbo.Employee') and type = 'U') drop table dbo.Employee go /*==============================================================*/ /* Table: Employee */ /*==============================================================*/ create table dbo.Employee ( ID int not null, Username varchar(20) null, Password varchar(20) null, constraint PK_EMPLOYEE primary key (ID) ) go EXECUTE sp_addextendedproperty N'MS_Description', N'Employee', N'user', N'dbo', N'table', N'Employee', NULL, NULL go EXECUTE sp_addextendedproperty N'MS_Description', N'主鍵ID', N'user', N'dbo', N'table', N'Employee', N'column', N'ID' go EXECUTE sp_addextendedproperty N'MS_Description', N'用戶名', N'user', N'dbo', N'table', N'Employee', N'column', N'Username' go EXECUTE sp_addextendedproperty N'MS_Description', N'密碼', N'user', N'dbo', N'table', N'Employee', N'column', N'Password' go 第五步:執(zhí)行PD生成的SQL語句,生成表結(jié)構(gòu)。 在查詢分析器中執(zhí)行生成的SQL語句后表結(jié)構(gòu)如圖: ![]() 完畢! 在Sybase AS Anywhere 7中同樣的方法修改特征碼之后也可以出來注釋!至于其他的就沒有一一測試了,大家有興趣可以多試試,接下來研究名稱+備注來生成數(shù)據(jù)庫注釋,但是苦于找不到資料,不知道如[%R%?[N]]等的語法,歡迎多指教。 |
|