团队合做设计一套系统数据模型,建立了PDM后,Table、View、Store Procedure等都建立好了,且建立了多个Schema方便管理这些数据库对象,但Table、view、Column等对象有Comment时(用来在团队不一样成员间共享描述信息)sql
生成数据库时会获得一个提示"不支持扩展属性,或对象不存在",分析发现异常在相似如下语句:数据库
if exists(select 1 from sys.extended_properties p where p.major_id = object_id('Environment.Resource') and p.minor_id = (select c.column_id from sys.columns c where c.object_id = p.major_id and c.name = 'ResourceCode') ) begin execute sp_dropextendedproperty 'MS_Description', 'user', 'Environment', 'table', 'Resource', 'column', 'ResourceCode' end execute sp_addextendedproperty 'MS_Description', '资源编码', 'user', 'Environment', 'table', 'Resource', 'column', 'ResourceCode' go
分析缘由,发现是因为采用了Schema(上述代码中的Environment),因此sp_addextendedproperty存储过程的第三个参数就应该是SCHEMA而不是user。查询相关资料发现以上SQL语句是基于Powerdesigner自带的对应的.xdb文件生成的,以下图是Column注释信息的SQL代码模板,对应的xdb模板文件存放在powerdesigner安装路径的Sybase\PowerDesigner 16\Resource Files\DBMS\sqlsv2012.xdb编码
如上图,每一个Column的Comment信息均经过以上代码模板生成,因此只须要修改代码模板(将sp_addextendedproperty的第三个参数值由user修改成schema便可)便可让全部对象的Comment生成语句获得修正。spa
注:在win7以上系统中须要使用管理员权限运行powerdesigner才能将修改后的模板文件保存。设计