解決PowerDesigner 16 Generate Datebase For Sql2005/2008 對象名sysproperties無效的問題


在PowerDesigner 16 中生成的sql語句,在執行的時候報錯:對象名sysproperties 無效的錯誤;造成此問題的原因是由於Sql 2005、2008 刪除了系統表 sysproperties 而改用 sys.extended_properties 表所致 , 以下是通過創建sysproperties視圖,以及修改powerdesigner sql語句生成模板后,

再生成數據庫SQL腳本執行,共分為三部:


第一步:在Sql 2005/2008 Exec the Sql 創建View 'sysproperties'

if exists (select 1 from sysobjects where name = 'sysproperties'and xtype = 'V')
begin
DROP VIEW sysproperties
end
GO
CREATE VIEW sysproperties
AS
SELECT 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 PropValue
FROM sysobjects As A INNER JOIN syscolumns As B ON A.id = B.id
INNER JOIN sys.extended_properties As C ON C.major_id = A.id
AND ( 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%
]%TABLE%')
and minor_id = 0 and name =
'MS_Description')
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%
: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%
]
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%
: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%
]

 


第三步:修改Column ColumnComment模板 路徑是 Database -> Edit Current DBMS 窗體 General 選項卡 下 Script -> Objects -> Column -> ColumnComment

[if exists (select 1
from sysproperties
where TableID = object_id('[%QUALIFIER%
]%TABLE%')
and ColName = %.q:COLUMN% AND PropName=
'MS_Description')
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%
]

 

修改之后 使用Generate Database 生成的SQL便可在SQL 2005/2008下執行 不在報找不到sysproperties 的錯誤。

本文參考自:http://hi.baidu.com/terry_zi/blog/item/67659ba149935ae89152ee60.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM