您的位置:首页 > 博客中心 > 数据库 >

PowerDesigner 16.5对SQL Server 2012 生成数据库时"不支持扩展属性"问题

时间:2022-03-14 11:30

 

团队合作设计一套系统数据模型,创建了PDM后,Table、View、Store Procedure等都创建好了,且创建了多个Schema方便管理这些数据库对象,但Table、view、Column等对象有Comment时(用来在团队不同成员间共享描述信息)

技术分享

生成数据库时会得到一个提示"不支持扩展属性,或对象不存在",分析发现异常在类似以下语句:

如上图,每个Column的Comment信息均通过以上代码模板生成,所以只需要修改代码模板(将sp_addextendedproperty的第三个参数值由user修改为schema即可)即可让所有对象的Comment生成语句得到修正。

注:在win7以上系统中需要使用管理员权限运行powerdesigner才能将修改后的模板文件保存。

 

摘自:

 

补充:

 

ColumnContent修改为:

 

Value修改为:

[if exists (select 1 from  sys.extended_properties
           where major_id = object_id(‘[%QUALIFIER%]%TABLE%‘) and minor_id = 0)
begin 
   [%OWNER%?[.O:[execute ][exec ]]sp_dropextendedproperty [%R%?[N]]‘MS_Description‘,  
   [%R%?[N]]‘schema‘, [%R%?[N]]%.q:OWNER%, [%R%?[N]]‘table‘, [%R%?[N]]%.q:TABLE% 
:declare @CurrentUser sysname 
select @CurrentUser = SCHEMA_NAME() 
[.O:[execute ][exec ]]sp_dropextendedproperty [%R%?[N]]‘MS_Description‘,  
   [%R%?[N]]‘schema‘, [%R%?[N]]@CurrentUser, [%R%?[N]]‘table‘, [%R%?[N]]%.q:TABLE% 
] 
end 


][%OWNER%?[.O:[execute ][exec ]]sp_addextendedproperty [%R%?[N]]‘MS_Description‘,  
   [%R%?[N]]%.q:COMMENT%, 
   [%R%?[N]]‘schema‘, [%R%?[N]]%.q:OWNER%, [%R%?[N]]‘table‘, [%R%?[N]]%.q:TABLE% 
:select @CurrentUser = SCHEMA_NAME()
[.O:[execute ][exec ]]sp_addextendedproperty [%R%?[N]]‘MS_Description‘,  
   [%R%?[N]]%.q:COMMENT%, 
   [%R%?[N]]‘schema‘, [%R%?[N]]@CurrentUser, [%R%?[N]]‘table‘, [%R%?[N]]%.q:TABLE% 
]

Values修改为:

[if exists(select 1 from sys.extended_properties p where
      p.major_id = object_id(‘[%QUALIFIER%]%TABLE%‘)
  and p.minor_id = (select c.column_id from sys.columns c where c.object_id = p.major_id and c.name = %.q:COLUMN%)
)
begin
   [%OWNER%?[.O:[execute ][exec ]]sp_dropextendedproperty [%R%?[N]]‘MS_Description‘, 
   [%R%?[N]]‘schema‘, [%R%?[N]]%.q:OWNER%, [%R%?[N]]‘table‘, [%R%?[N]]%.q:TABLE%, [%R%?[N]]‘column‘, [%R%?[N]]%.q:COLUMN%
:declare @CurrentUser sysname
select @CurrentUser = SCHEMA_NAME()
[.O:[execute ][exec ]]sp_dropextendedproperty [%R%?[N]]‘MS_Description‘, 
   [%R%?[N]]‘schema‘, [%R%?[N]]@CurrentUser, [%R%?[N]]‘table‘, [%R%?[N]]%.q:TABLE%, [%R%?[N]]‘column‘, [%R%?[N]]%.q:COLUMN%
]
end


][%OWNER%?[.O:[execute ][exec ]]sp_addextendedproperty [%R%?[N]]‘MS_Description‘, 
   [%R%?[N]]%.q:COMMENT%,
   [%R%?[N]]‘schema‘, [%R%?[N]]%.q:OWNER%, [%R%?[N]]‘table‘, [%R%?[N]]%.q:TABLE%, [%R%?[N]]‘column‘, [%R%?[N]]%.q:COLUMN%
:select @CurrentUser = SCHEMA_NAME()
[.O:[execute ][exec ]]sp_addextendedproperty [%R%?[N]]‘MS_Description‘, 
   [%R%?[N]]%.q:COMMENT%,
   [%R%?[N]]‘schema‘, [%R%?[N]]@CurrentUser, [%R%?[N]]‘table‘, [%R%?[N]]%.q:TABLE%, [%R%?[N]]‘column‘, [%R%?[N]]%.q:COLUMN%
]

这个是表的

其他类型同理,主要修改Values值中的user为schema,和select @CurrentUser = User_NAME() 修改为 select @CurrentUser = SCHEMA_NAME()

热门排行

今日推荐

热门手游