打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
PowerDesigner使用技巧之生成含SQLServer2000的表和列注释的角本
PowerDesigner的Physical Model design中,除了Oracle外,选择其他数据库模型,最后生成建数据库脚本的时候,不会自动生成记录表和列注释信息的数据库脚本代码。
    先解释一下这个问题的概念,我们通过PowerDesigner设计oracle数据库,最后得到的脚本可以像下面这样,其中的comment语句就是我上面指出的在oracle中保存注释信息的脚本语句,在oracle中执行后,可以通过查询oracle的数据字典得到这些信息。这样做的好处是,以后查看表结构比较方便,不需要从数据库文档资料中去寻找了,对于团队开发来说,有应用的意义。
/*===============================================*/
/* Table: EMP                                    */
/*==============================================*/
create table EMP  (
   "EmpID"              NUMBER,
   "EmpName"            VARCHAR2(50),
   SEX                  CHAR(1)
)
/
comment on table EMP is '职员信息'
/
comment on column EMP."EmpID" is '职员编号'
/
comment on column EMP."EmpName" is '职员姓名'
/
comment on column EMP.SEX is '性别  F:女  M:男'
/
   SQL Server也有这样的语句,但是,大家往往发现选择了数据库模型是SQL Server,在自动生成建库脚本的时候,即使你选上了生成comment语句的选项,powerdesigner也不会帮你自动生成,是PowerDesigner不支持SQL Server么,答案显然是否定的。
 
问题的解决
    PowerDesigner这个工具可以支持任何一种关系型数据库的模型设计,因为,在PowerDesigner中每一种数据库模型的特性定义都存储在一个xdb文件中,我们可以在[PowerDesigner_Install_Home]/Resource Files/DBMS下可以找到。当然,我们也可以自己创建一个新的xdb,定义好我们想支持的数据库模型的特性。明白了这一点,这个问题的答案就显而易见。
使用的是企业版。Sybase有些简化版本(如SQL Moduler)就不能自定义xdb,请大家注意。
1、从菜单TOOLS->RESOUCES->DBMS,进入自定义数据模型
2、PowerDesigner弹出一个对话框,列表框中列出了当前PowerDesigner支持的数据库模型。我们选择创建一个新的。输入名字SQL SERVER 2000(EXTENDED),选择从现有的SQL SERVER 2000复制,这样SQL SERVER 2000(EXTENDED)就包含了原来SQL SERVER2000模型拥有的所有特征
3、接下来,我们就需要为SQL Server 2000(Extended)添加支持自动生成表和列注释代码的特性。PowerDesinger把定义的特性用树状结构组织了起来,本篇要做的工作就是定义Script代码特征。我们需要修改Script\Objects\Table\TableComment和Script\Objects\Column\ColumnComment中的脚本特征代码。
4、SQL Server 2000在数据库中保存表和列注释是通过调用系统存储过程sp_addextendedproperty来做的。那么我们只需要,分别写上
表级的注释代码是:
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'%COMMENT%', N'user', N'%OWNER%', N'table', N'%TABLE%', N'column', N'%COLUMN%'
 大家看看这些代码,立刻就明白是怎么回事了。%COMMENT%之类的就是相当于替换变量,PowerDesigner在生成脚本的时候自动替换设计模型中替换变量的值。
5、保存SQL Server 2000(Extended)成一个xdb文件。
6、现在,我们可以创建一个新的Physical Data Model了,数据库模型选SQL Server 2000(Extended)。建立一个表,需要提醒的是,一定要指定一个数据库使用者,一般用dbo。我们可以为表和列都添加上注释。
7、生成建库脚本,菜单Databases->Generate Database。在图7所示的对话框中,注意要选中comment选项。点击确定,就得到最终的建库脚本。打开看看,我们看到了PowerDesinger根据我们告诉它的规则生成了对应的代码

EXECUTE sp_addextendedproperty N'MS_Description', N'雇员信息', 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'EmployeeID'
go
….
8、我们在SQL Server 2000中执行这个角本,然后通过Enterprise Manager可以看到这些注释。
小结
    通过这个实践,我们可以了解PowerDesigner是如何处理不同数据库的SQL语法差异的,这和我们开发应用中的参数文件的思路基本一致。同时,我们也应该认识到,PowerDesinger的功能还是比较多和复杂的,只有熟悉这个工具的功能使用,才能真真提高生产效率。

=======================

使用PowerDesigner 12 生成的sql执行时,出现下面的错误:

execute sp_addextendedproperty 'MS_Description',
   '表名',
   'user', ‘’, 'table', 'Groups'
go 

服务器: 消息 15135,级别 16,状态 1,过程 sp_validatepropertyinputs,行 100. 对象无效。
            不允许在 '.Groups'上使用扩展属性,或对象不存在。
google了半天终于找到了原因:原来是没有为表指定Owner而导致的错误。

execute sp_addextendedproperty 'MS_Description',
   '表名',
   'user', 'dbo', 'table', 'Groups'
go 

 为表名指定所有这就行了:在PowerDesigner 中的表上单击右键,属性就会出来Owner先项,创建一个dbo即可

在生成扩展属性字段的注释的时候。生成了一个comment on column 在SQL server 中执行一直说commnet 关键字错误。查了一下原来SQL server  中没有这个。是甲骨文上的。

修改数据库的方式是:Tools-->Resources-->DBMS-->选择数据库就可以了。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
在PowerDesigner中,把Comment注释列给调出来,等于SQL SERVER中的字段说明。
powerdesigner逆向工程生成PDM时的列注释解决方案的补充
从SQL Server数据库转到Oracle数据库的数据脚本处理
在PowerDesigner12 逆向工程DataBase SQl时出现:unable t...
列举SQL Server数据库中所有的表 List SQL Server Tables
请问一个SQL Server数据库中最多可以存放多少个Table? MS-SQL Serv...
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服