在用powerdesigner逆向工程生成PDM時,列注釋(ColumnComment)始終無法生成,歷經數小時的探索,找到一個折衷的方法,現分享如下。并希望有高手指點更好的方法。
邀月使用的是Powerdesigner 15.2,數據庫為SQL Server 2008 r2
方法如下:
1、在PowerDesigner界面-File-Reverse Engineer-Database,然后選擇一個DBMS,我這里選取一個由系統默認的SQL Server 2008 DBMS修改而來的SQL_2008_MyDefine。
選好odbc,輸入正確的連接串,選擇數據庫及表。
生成效果:Name為英文,且Comment列為空。
而我們希望的是Name列為中文,Comment為中文。
查看了下在線幫助,發現在SQL_2008_MyDefine::Script/Objects/Column/SqlListQuery下的Value值如下:
注意該值中上面是PDM對應的列名,下面是從SQL數據庫中取到的相關屬性值。其中“
(select convert(varchar(8000), value) from ::fn_listextendedproperty(NULL, 'user', u.name, 'table', o.name, 'column', c.name) where name = 'MS_Description') as colnE,
”是可以取到Comment值的,可是生成的PDM為什么Comment列為空呢?嘗試修改該SQL語句,將語句提取出來,也可以獲取結果:
后來發現,直接用生成表的SQL,而不是用數據庫就可以生成注釋。如下圖:
但字段類型全亂了。
難道Powerdesigner真的這么弱嗎?google了一下,看到官方文檔:
http://manuals.sybase.com/onlinebooks/group-pd/pdd1100e/advanced/@Generic__BookTextView/1302;hf=0
里面有關于SqlListQuery的解釋。
再看看上面的SQL語句,突然想到,既然可以在SQL查詢出結果,那么出錯一定在生成PDM的時候,
在SQL_2008_MyDefine::Script/Objects/Column中看到這么一段:
將上面的Value值中上面的一行中“Comment”修改為“COLNNAME”會如何?即
{OWNER, TABLE, S, COLUMN, DTTPCODE, LENGTH, SIZE, PREC, COMPUTE, NOTNULL, IDENTITY, DOMAIN, DEFAULT, ExtIdentitySeedInc, COMMENT, ExtCollation, ExtIdtNotForReplication, ExtDeftConstName, Sparse, FileStream, ExtRowGuidCol}改為
{OWNER, TABLE, S, COLUMN, DTTPCODE, LENGTH, SIZE, PREC, COMPUTE, NOTNULL, IDENTITY, DOMAIN, DEFAULT, ExtIdentitySeedInc, COLNNAME , ExtCollation, ExtIdtNotForReplication, ExtDeftConstName, Sparse, FileStream, ExtRowGuidCol}
結果生成如下:
同理將SQL_2008_MyDefine::Script/Objects/Table/SqlListQuery下的Value的第一行中
{OWNER, TABLE, TABLE_TYPE, Comment }的Comment改為{OWNER, TABLE, TABLE_TYPE, TNAME }
生成結果,如下:
至此,我的基本目的,已經達到了,雖然沒有直接生成Comment列,但可以通過以下vbs腳本,從Name列生成Comment列:
'代碼一:將name生成comment的腳本
仔細思索:為什么從SQL生成的腳本有Comment,可是到生成PDM時為什么沒有轉化成功呢?是否Comment名稱不對應?
于是將 原來的 COMMENT 加上 COLNNAME ,同時在下面的SQL語句中增加一列與COMMENT相同的值:
(select convert(varchar(8000), value) from ::fn_listextendedproperty(NULL, 'user', u.name, 'table', o.name, 'column', c.name) where name = 'MS_Description') as colnF,
如下圖:
這樣,Name列和Comment同時生成,終于OK!
助人等于自助! 3w@live.cn
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
