在用powerdesigner逆向工程生成PDM時(shí),列注釋(ColumnComment)始終無(wú)法生成,歷經(jīng)數(shù)小時(shí)的探索,找到一個(gè)折衷的方法,現(xiàn)分享如下。并希望有高手指點(diǎn)更好的方法。
邀月使用的是Powerdesigner 15.2,數(shù)據(jù)庫(kù)為SQL Server 2008 r2
方法如下:
1、在PowerDesigner界面-File-Reverse Engineer-Database,然后選擇一個(gè)DBMS,我這里選取一個(gè)由系統(tǒng)默認(rèn)的SQL Server 2008 DBMS修改而來(lái)的SQL_2008_MyDefine。
選好odbc,輸入正確的連接串,選擇數(shù)據(jù)庫(kù)及表。
生成效果:Name為英文,且Comment列為空。
而我們希望的是Name列為中文,Comment為中文。
查看了下在線幫助,發(fā)現(xiàn)在SQL_2008_MyDefine::Script/Objects/Column/SqlListQuery下的Value值如下:
注意該值中上面是PDM對(duì)應(yīng)的列名,下面是從SQL數(shù)據(jù)庫(kù)中取到的相關(guān)屬性值。其中“
(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語(yǔ)句,將語(yǔ)句提取出來(lái),也可以獲取結(jié)果:
后來(lái)發(fā)現(xiàn),直接用生成表的SQL,而不是用數(shù)據(jù)庫(kù)就可以生成注釋。如下圖:
但字段類型全亂了。
難道Powerdesigner真的這么弱嗎?google了一下,看到官方文檔:
http://manuals.sybase.com/onlinebooks/group-pd/pdd1100e/advanced/@Generic__BookTextView/1302;hf=0
里面有關(guān)于SqlListQuery的解釋。
再看看上面的SQL語(yǔ)句,突然想到,既然可以在SQL查詢出結(jié)果,那么出錯(cuò)一定在生成PDM的時(shí)候,
在SQL_2008_MyDefine::Script/Objects/Column中看到這么一段:
將上面的Value值中上面的一行中“Comment”修改為“COLNNAME”會(huì)如何?即
{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}
結(jié)果生成如下:
同理將SQL_2008_MyDefine::Script/Objects/Table/SqlListQuery下的Value的第一行中
{OWNER, TABLE, TABLE_TYPE, Comment }的Comment改為{OWNER, TABLE, TABLE_TYPE, TNAME }
生成結(jié)果,如下:
至此,我的基本目的,已經(jīng)達(dá)到了,雖然沒(méi)有直接生成Comment列,但可以通過(guò)以下vbs腳本,從Name列生成Comment列:
'代碼一:將name生成comment的腳本
仔細(xì)思索:為什么從SQL生成的腳本有Comment,可是到生成PDM時(shí)為什么沒(méi)有轉(zhuǎn)化成功呢?是否Comment名稱不對(duì)應(yīng)?
于是將 原來(lái)的 COMMENT 加上 COLNNAME ,同時(shí)在下面的SQL語(yǔ)句中增加一列與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同時(shí)生成,終于OK!
助人等于自助! 3w@live.cn
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

