這兩天用PD做資料庫建模,在從PDM-->DB時中文備忘出現亂碼,如:???(DD)
一直以為中文編碼問題,可是我試了所有的中文編碼方式,還是無法解決問題。
後來發開是PD產生的SQL語句有問題,PD自動產生的範例指令碼如下:
execute sp_addextendedproperty 'MS_Description',
'訂單編號',
'user', 'dbo', 'table', 'OrderInfo', 'column', 'A1'
go
我把此指令碼此指令碼拿到資料庫執行,產生欄位備忘依然為亂碼,把指令碼改成:
execute sp_addextendedproperty 'MS_Description',
N'代理費',
'schema', 'dbo', 'table', 'T1', 'column', 'COL1'
go
之後一中文就可以正常顯示。
解決方案:
在PD中 tools-->resources-->dbms-->sql server 2008開啟DBMS屬性視窗,在general選項卡中選擇Microsoft SQL Server 2008-->script-->objects-->column-->columncomment修改其中的內容為:
Code
[%OWNER%?[.O:[execute ][exec ]]sp_addextendedproperty [%R%?[N]]'MS_Description',
[[N]]%.q:COMMENT%,
[%R%?[N]]'schema', [%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_addextendedproperty [%R%?[N]]'MS_Description',
[[N]]%.q:COMMENT%,
[%R%?[N]]'schema', [%R%?[N]]@CurrentUser, [%R%?[N]]'table', [%R%?[N]]%.q:TABLE%, [%R%?[N]]'column', [%R%?[N]]%.q:COLUMN%
儲存之後再產生資料庫,問題解決。