PowerDesign 16.0 生成的SQL Server2000 数据库脚本时MS_Description不存在的问题解决

根据网上查询到的资料,找到了解决方法,原文出自:http://www.cnblogs.com/24tt/p/5047257.html

PowerDesign 16.0 生成的Script语句,Sql2000内,带字段备注的语句执行时存在如下错误:

PowerDesigner 无法更新或删除属性。“某某”的属性 MS_Description不存在。

MSSQLSRV2000::Script\Objects\Column\ColumnComment

Modified Column ColComment

修改Column ColumnComment模板   路径是 Database -> Edit Current DBMS 窗体 General 选项卡 下 Script -> Objects -> Column -> ColumnComment

实际上是默认生成语句存在判断错误:默认的如下():

[if exists (select 1 from sysproperties where id = object_id(‘[%QUALIFIER%]%TABLE%‘)  and type = 4) begin

以上判断是该表是否已存在备注,当有2个及以上备注要添加时(如C1,C2),添加到第二个备注C2,判断系统一定存在,而紧接着需要执行删除C2,因C2都没有添加过需要删除肯定会提示“无法更新或删除属性”了。sp_dropextendedproperty

因此需要修改判断,定位到精准的该字段是否有备注,有则删除,修改为如下(红色为添加部分,SQL2000测试通过):

[if exists (select 1

from  sysproperties            where  id = object_id(‘[%QUALIFIER%]%TABLE%‘) and smallid in(select colid from syscolumns where id = object_id(‘[%QUALIFIER%]%TABLE%‘) and name = %.q:COLUMN%  and number = 0) and name=‘MS_Description‘  and type = 4 ) begin

最后贴出完整的代码:

[if exists (select 1
from sysproperties
where id = object_id(‘[%QUALIFIER%]%TABLE%‘)
and smallid in(select colid
from    syscolumns
where    id = object_id(‘[%QUALIFIER%]%TABLE%‘)
and name = %.q:COLUMN% and
number = 0) and name=‘MS_Description‘  and type = 4 )
begin
   [%OWNER%?[.O:[execute ][exec ]]sp_dropextendedproperty [%R%?[N]]‘MS_Description‘,
   [%R%?[N]]‘user‘, [%R%?[N]]%.q:OWNER%, [%R%?[N]]‘table‘, [%R%?[N]]%.q:TABLE%, [%R%?[N]]‘column‘, [%R%?[N]]%.q:COLUMN%
:declare @CurrentUser sysname
select @CurrentUser = user_name()
[.O:[execute ][exec ]]sp_dropextendedproperty [%R%?[N]]‘MS_Description‘,
   [%R%?[N]]‘user‘, [%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]]‘user‘, [%R%?[N]]%.q:OWNER%, [%R%?[N]]‘table‘, [%R%?[N]]%.q:TABLE%, [%R%?[N]]‘column‘, [%R%?[N]]%.q:COLUMN%
:select @CurrentUser = user_name()
[.O:[execute ][exec ]]sp_addextendedproperty [%R%?[N]]‘MS_Description‘,
   [%R%?[N]]%.q:COMMENT%,
   [%R%?[N]]‘user‘, [%R%?[N]]@CurrentUser, [%R%?[N]]‘table‘, [%R%?[N]]%.q:TABLE%, [%R%?[N]]‘column‘, [%R%?[N]]%.q:COLUMN%
]

该代码经过测试,暂时没问题。

这是修改位置

时间: 2024-10-14 08:00:00

PowerDesign 16.0 生成的SQL Server2000 数据库脚本时MS_Description不存在的问题解决的相关文章

SQL Server 2008 转换为 SQL 2005 数据库 脚本生成

本文讨论如何把数据库从SQL Server 2008版本降低到2005,因为在本地开发是以SQL Server 2008 Express Edition版本进行的,而主机提供商现在提供的MSSQL只支持到2005,所以需要把数据库版本给降下来.这个过程挺麻烦的,首先需要有SQL Server Management Studio 2008(简称SSMS),现在先来下载它. SQL Server Management Studio 2008 Express 下载(如 果你用的是XP操作系统,下载那个

SQL Server 2008 R2如何生成带数据的数据库脚本

1.对想要复制的数据库右键,"任务","生成脚本" 2.下面需要注意的是,默认情况下,只会生成仅架构的脚本,也就是说仅仅有表结构,而没有数据的空壳.所以需要额外的设置. 在设置脚本编写选项,选择"高级" 然后在"要编写脚本的数据类型",选择"架构和数据" 3.运行生成的脚本. 注意修改数据库文件的位置,因为可能脚本中的路径在目标计算机中并不存在. SQL Server 2008 R2如何生成带数据的数据库脚

sql server: 数据库备份时出现-operating-system-error-5拒绝访问

本文转自:https://blog.csdn.net/ibsfn/article/details/80770855 sql-server 数据库备份时出现-operating-system-error-5拒绝访问.一般备份文件选择的目录为磁盘根目录或备份所选分区未授予sqlserver用户读写权限时会出现此错误. 解决办法就是给sqlserver用户授予权限:选择要备份的文件夹 ,右键–>属性–>安全–>看下”组或用户”是否包涵Authenticated Users 这个用名,因为是包括

如何改变sql server2000数据库列属性的默认值为0

--如果字段原来无默认值,直接执行如下语句,添加默认值: alter table 表名 add default(1) for 字段名 --如果原来有默认值,现在要更改默认值,则需要先把原来的默认值drop掉,再添加新的默认值 alter table 表名 drop constraint 默认值约束的名称 --如果不知道默认值约束的名称,用如下语句查询得到: select [name] from sysobjects t where id = (select cdefault from sysco

WIN10怎么安装SQL server2000数据库

怎样在win10下安装sql2000数据库 1.安装之前先确认自己的Windows10是64位的还是32位的 2.替换对应的系统文件SQLUNIRL.dll 此时你可能会遇到,没有权限替换文件或重命名原文件的问题: 选中你要替换的文件,右键属性--安全-里面的用户选中需要的或是每一个都--编辑--勾选完全控制--然后 应用 确定  你就可以修改或是替换系统中的原文件了 3.右键 微软SQL2000+SP4集成安装.exe 属性---勾选兼容XP-SP2 设置下勾选以管理员身份运行--然后应用--

SQL SERVER数据库备份时出现“操作系统错误5(拒绝访问)。BACKUP DATABASE 正在异常终止。”错误的解决办法

一般备份文件选择的目录为磁盘根目录或备份所选分区未授予sqlserver用户读写权限时会出现此错误. 解决办法就是给sqlserver用户授予权限: 选择要备份的文件夹 ,右键-->属性-->安全-->看下"组或用户"是否包涵Authenticated Users 这个用名,因为是包括在计算机上或活动目录中的所有通过身份验证的账户,如果有了则给其分配读写的权限,若没有点击-->编辑-->添加-->高级-->查找 找到此用户后添加,再给其分配权限

sql server 数据库附加时程序集错误

在数据库detach和attach的过程中,如果在建立程序集的时候选择的权限集是无限制,并且在建立程序集的时候和后来attach的时候 采用的不是同一个用户,就可能造成部分功能无法使用.原因是由于在选择无限制的时候,master的和附加的数据库的owner_id不同 查询语句: select * from sys.databases where name in('master','TableName'); select * from sys.syslogins;--查询master的owner_

SQL从数据库导出数据到EXCEL换行的问题解决方法

EXCEL版本:Office 2010 我是遇到这种情况,辛苦的组成了一个复杂的SQL ,得出正确数据,使用简便的复制粘贴的方法准备把数据复制到EXCEL中, 可是悲剧了,因为资料里有换行符,粘贴到EXCEL后行数完全错乱了. 于是我找万能的百度,参考了很多,也试了很多方法,可是还是不行.于是自己测试了两种方法,两种方法都完美实现. 一.方法一. 我想到了一个办法:把查询结果拉到一个数据集:DataSet1.xsd中,然后把结果集与Report关联,然后预览,保存成EXCEL,这种方法是行的.只

写hive sql和shell脚本时遇到几个蛋疼的问题!

错误一: Hive的where后不能用字段的别名, 错误二: hive的groupby中不能用自己定义函数,否则报错(用嵌套select取代) 错误三: 运行:$ ./hive_game_operationstatis5.sh时,报错信息例如以下: ./hive_game_operationstatis5.sh:line 11: [: missing `]' ./hive_game_operationstatis5.sh:line 17: /tmp/statis_activitysourcest