今天用PD 16生成sql建表语句,PD配置的数据库也是sql server 2008,结果生成的插入字段描述的语句报对象名sysproperties无效,经过查找得知这个系统表在sqlserver 2005和2008中已经没有了,替换成系统表sys.extended_properties了,经过综合了网上各位大侠的意见,我的处理方法如下:
1、先用PD生成sql代码
2、将sysproperties替换成(SELECT class AS id,Minor_id AS type,* from sys.extended_properties) _a
即PD生成的代码:
if exists (select 1
from sysproperties
where id = object_id('t_w_a_accept_apply_sort')
and type = 4)
begin
declare @CurrentUser sysname
select @CurrentUser = user_name()
execute sp_dropextendedproperty 'MS_Description',
'user', @CurrentUser, 'table', 't_w_a_accept_apply_sort', 'column', 'accept_apply_sort'
end
替换后的代码:
if exists (select 1
from (SELECT class AS id,Minor_id AS type,* from sys.extended_properties) _a
where id = object_id('t_w_a_accept_apply_sort')
and type = 4)
begin
declare @CurrentUser sysname
select @CurrentUser = user_name()
execute sp_dropextendedproperty 'MS_Description',
'user', @CurrentUser, 'table', 't_w_a_accept_apply_sort', 'column', 'accept_apply_sort'
end
如此,全部替换一下,代码就执行成功了,不过我还不太清楚新表的Minor_id 和原表的type是不是同一个意思,有待提高哇。
另外,我还找到了一个办法,是受小F姐姐的启发,让PD在生成代码的时候就改过来,那就得修改PD的代码模板了,方法如下:
tools-->resources-->dbms-->sql server 2008
双击sql server 2008打开DBMS属性窗口,在general选项卡中选择Microsoft SQL Server 2008-->script-->objects-->Column-->ColumnComment
在对话框的右边就可以看到生成代码的模板了,哇,原来PD的代码是根据这个来生成的(嘿嘿,见识短浅,见笑了)。
将模板中的sysproperties替换成(SELECT class AS id,Minor_id AS type,* from sys.extended_properties) _a之后,再生成的sql代码就不会出现了。
这样就不用每次生成完代码还要再替换一次了,可以直接运行。不过话说在做这种系统级的修改的时候,有点忐忑的说,呵呵。