您好,欢迎访问一九零五行业门户网

解决方案:PowerDesigner 16生成的SqlServer 2000/2005/2008脚本执行出现:“对象名

现象: 在powerdesigner 16 中生成的sql语句,在执行的时候报错: 对象名sysproperties 无效的错误 ; 原因分析: 造成此问题的原因是由于sql 2005、2008 删除了系统表 sysproperties 而改用 sys.extended_properties 表所致 , 以下是通过创建sysproperties视
现象:
在powerdesigner 16 中生成的sql语句,在执行的时候报错:对象名sysproperties 无效的错误;
原因分析:
造成此问题的原因是由于sql 2005、2008 删除了系统表 sysproperties 而改用 sys.extended_properties 表所致 , 以下是通过创建sysproperties视图,以及修改powerdesigner sql语句生成模板后,再生成数据库sql脚本执行,共分为三部:
第一步:
在sql 2005/2008/2012查询分析器中执行下面的 sql 语句创建view 'sysproperties'
sysobjects xtype ) sysproperties syspropertiesasselect a.name as tablename,a.id as tableid,b.name as colname,b.colid as colid,b.xtype as coltype,c.name as propname,c.value as propvaluefrom sysobjects as a inner join syscolumns as b on a.id = b.idinner join sys.extended_properties as c on c.major_id = a.idand ( minor_id = b.colid)
第二 步:
修改table tablecomment模板 路径是 database -> edit current dbms 窗体 general 选项卡 下 script -> objects -> table -> tablecomment
[if exists (select 1 from sys.extended_properties where major_id = object_id('[%qualifier%) and minor_id = 0 and name = 'ms_description') begin [%owner%?[.o:[execute ][exec ]]sp_dropextendedproperty [%r%?[n]]'ms_description', [%r%?[n]], [%r%?[n]]%.q:table% :declare @currentuser sysname select @currentuser = user_name() [.o:[execute ][exec ]]sp_dropextendedproperty [%r%?[n]]'ms_description', [%r%?[n]], [%r%?[n]]%.q:table% ] end][%owner%?[.o:[execute ][exec ]]sp_addextendedproperty [%r%?[n]]'ms_description', [%r%?[n]]%.q:comment%, [%r%?[n]], [%r%?[n]]%.q:table% :select @currentuser = user_name() [.o:[execute ][exec ]]sp_addextendedproperty [%r%?[n]]'ms_description', [%r%?[n]]%.q:comment%, [%r%?[n]], [%r%?[n]]%.q:table% ]
第三步:
修改column columncomment模板 路径是 database -> edit current dbms 窗体 general 选项卡 下 script -> objects -> column -> columncomment
[if exists (select 1from syspropertieswhere tableid = object_id('[%qualifier%)and colname = %.q:column% and propname='ms_description')begin[%owner%?[.o:[execute ][exec ]]sp_dropextendedproperty [%r%?[n]]'ms_description',[%r%?[n]], [%r%?[n]]%.q:column%:declare @currentuser sysnameselect @currentuser = user_name()[.o:[execute ][exec ]]sp_dropextendedproperty [%r%?[n]]'ms_description', [%r%?[n]], [%r%?[n]]%.q:column%]end][%owner%?[.o:[execute ][exec ]]sp_addextendedproperty [%r%?[n]]'ms_description',[%r%?[n]]%.q:comment%,[%r%?[n]], [%r%?[n]]%.q:column%:select @currentuser = user_name()[.o:[execute ][exec ]]sp_addextendedproperty [%r%?[n]]'ms_description', [%r%?[n]]%.q:comment%,[%r%?[n]], [%r%?[n]]%.q:column%]
修改之后 使用generate database 生成的sql便可在sql 2005/2008下执行 不在报找不到sysproperties 的错误。
大功告成!!!
作者:记忆逝去的青春 出处: 本文版权归作者和博客园共有,香港空间,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,美国空间,可以通过 联系我,非常感谢。
,服务器空间
其它类似信息

推荐信息