• 712 阅读
  • 1 回复

PowerDesigner给数据库添加MS_Description出错

视频在线上传+队列转换FLV+水印+捉图+修复+获时+转3GP(API语言不限,开视频站必备!)
本主题由 张小鱼 于 2011/5/19 10:38:00 执行 标题样式 [查看记录]

原因:系统函数sp_addextendedproperty 的第四个参数(用户名) 不能为空。但PD在生成的时候却是’’ (空字符串)

解决方法

在PDM时。DataBase >> Edit Current DBMS >> Script >> Object >> Column >> ColumnComment

在value 栏中默认值是:

[%R%?[exec ]][execute ]sp_addextendedproperty [%R%?[N]]'MS_Description', [%R%?[N]]%.q:COMMENT%,[%R%?[N]]'user', [%R%?[N]]%.q:OWNER%, [%R%?[N]]'table', [%R%?[N]]%.q:TABLE%, [%R%?    [N]]'column',
[%R%?[N]]%.q:COLUMN%


修改后的ColumnComment 如下:(红色为修改的地方)

declare @Cmt%TABLE% varchar(128)

select @Cmt%TABLE% = user_name()

[%R%?[exec ]][execute ]sp_addextendedproperty [%R%?[N]]'MS_Description',

[%R%?[N]]%.q:COMMENT%,

%R%?[N]]'user', [%R%?[N]]@Cmt%TABLE%, [%R%?[N]]'table', [%R%?[N]]%.q:TABLE%,

[%R%?[N]]'column', [%R%?[N]]%.q:COLUMN%


结果说出来了,那么我们来分析下,里面具体的参数:

修改前对应生成的脚本,如下:


execute sp_addextendedproperty 'MS_Description',

'管理员名称', 'user', '', 'table', 'Admin', 'column', 'Ad_Name'

Go


我们来分析下,每项内容对应的是什么:

'MS_Description'   指定调用的扩展属性存储过程'MS_Description'

%.q:COMMENT%         扩展属性的value(就是Column属性的Name)

'user'                                固定的字符串’user’

''                                        这里本应该是用户名,但因为设定问题,这里没有出现. SQL语句的执行异常,就在这里

'Table'                              级别 1 对象的类型。

'Admin'                                   级别 1 对象的名称。

'Column’                         级别 2 对象的类型。

'Ad_Name’                            级别 2 对象的名称。


找到了问题所在.就好办了.

细心的同学会发现. 如果,给Table添加扩展属性MS_Description,则 在运行PD生成的脚本时,不会出问题.那它是怎么处理的呢. 我们可以参考下Table的写法.再来修改Column.

TableComment地址(与ColumnComment类似):

当PDM时。DataBase >> Edit Current DBMS >> Script >> Object >> Table >> TableComment

在与Column扩展属性SQL 脚本的对比中.我们不难发现.Table的脚本中多了几句获取用户名的T-SQL脚本.

declare @CmtAdmin varchar(128)

select @CmtAdmin = user_name()

那,找到对应的PD参数,再修改到ColumnComment 中,就可以了.

最终,修改后的ColumnComment 如下:



declare @Cmt%TABLE% varchar(128)

select @Cmt%TABLE% = user_name()

[%R%?[exec ]][execute ]sp_addextendedproperty [%R%?[N]]'MS_Description',

[%R%?[N]]%.q:COMMENT%,

%R%?[N]]'user', [%R%?[N]]@Cmt%TABLE%, [%R%?[N]]'table', [%R%?[N]]%.q:TABLE%,

[%R%?[N]]'column', [%R%?[N]]%.q:COLUMN%

PDM时。DataBase >> Edit Current DBMS >> Script >> Object >> Table >> TableComment
生成后,
declare @CurrentUser sysname
select @CurrentUser = user_name()
execute sp_addextendedproperty 'MS_Description',
  '编号',
  'user', @CurrentUser, 'table', 'TJ_RESEARCHPARA', 'column', ID
出错:
消息 15135,级别 16,状态 2,过程 sp_addextendedproperty,第 38 行
对象无效。'bsbak.TJ_RESEARCHPARA.YYBH' 不允许有扩展属性,或对象不存在。

改为:
execute sp_addextendedproperty 'MS_Description',
  '编号',
  'user', 'dbo', 'table', 'TJ_RESEARCHPARA', 'column', ID

本文地址:http://www.cnblogs.com/ATree/archive/2010/07/12/PowerDesigner-MS_Description.html
原文标题:过程sp_addextendedproperty对象无效,不允许有扩展属性,或对象不存在
小鱼的淘宝店铺-多多支持哇
视频在线上传+队列转换FLV+水印+捉图+修复+获时+转3GP(API语言不限,开视频站必备!)
小鱼测试有误:
应替换为:

代码 复制 - 运行

declare @Cmt%TABLE% varchar(128) 
select @Cmt%TABLE% = user_name() 
[%R%?[exec ]][execute ]sp_addextendedproperty [%R%?[N]]'MS_Description',  
[%R%?[N]]%.q:COMMENT%, 
[%R%?[N]]'user', [%R%?[N]]@Cmt%TABLE%, [%R%?[N]]'table', [%R%?[N]]%.q:TABLE%,  
[%R%?[N]]'column', [%R%?[N]]%.q:COLUMN% 


红色部分原文少了这个

使用后OK了
本帖最后由 张小鱼 于 2015-08-29 22:22 编辑
小鱼的淘宝店铺-多多支持哇