惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - Franky
有赞技术团队
有赞技术团队
博客园 - 司徒正美
量子位
N
News and Events Feed by Topic
T
Threatpost
Last Week in AI
Last Week in AI
D
Darknet – Hacking Tools, Hacker News & Cyber Security
酷 壳 – CoolShell
酷 壳 – CoolShell
C
CERT Recently Published Vulnerability Notes
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
I
Intezer
人人都是产品经理
人人都是产品经理
T
Tenable Blog
IT之家
IT之家
雷峰网
雷峰网
腾讯CDC
博客园 - 聂微东
V
Visual Studio Blog
S
SegmentFault 最新的问题
Scott Helme
Scott Helme
Spread Privacy
Spread Privacy
月光博客
月光博客
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
V2EX
大猫的无限游戏
大猫的无限游戏
Apple Machine Learning Research
Apple Machine Learning Research
爱范儿
爱范儿
T
Tailwind CSS Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
罗磊的独立博客
N
Netflix TechBlog - Medium
J
Java Code Geeks
宝玉的分享
宝玉的分享
F
Full Disclosure
WordPress大学
WordPress大学
A
Arctic Wolf
小众软件
小众软件
AWS News Blog
AWS News Blog
Attack and Defense Labs
Attack and Defense Labs
NISL@THU
NISL@THU
AI
AI
Hugging Face - Blog
Hugging Face - Blog
F
Fortinet All Blogs
云风的 BLOG
云风的 BLOG
N
News | PayPal Newsroom
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org

博客园 - 蒋建华

使用SharePoint 2010 Management Shell修改SharePoint 2010 身份认证方式的两种方法 推荐几款兼容移动终端和PC终端的UI控件 八大免费SharePoint MasterPage 和Theme 一个完整的微软官方提供的SharePoint 2010 完整模板 Sample Master Pages for SharePoint 2010 Windows 7下安装SharePoint Server 2010指南 使用Create EndPoint创建本机XML Web Service 将PD的物理模型导入Erwin Workflow4 持久化之数据库模型 私有云、公有云与传统数据中心 ORM及相关技术概念入门 SharePoint 2010企业应用解决方案 微软云计算解决方案之特性及案例分析 不竭动力:云计算中虚拟化管理详解 云协作新利器:微软SharePoint Online 云计算版的PC管理工具:Windows Intune PetShop与ORM架构的比较 私有云:构建DDC测试环境需求分析 教你如何安装配置动态数据中心测试环境
使用PowerDesigner 15生成SQL Server中文注释
蒋建华 · 2011-10-13 · via 博客园 - 蒋建华
 

问题描述

使用Power DesignerPD)生成的SQL脚本创建SQL Server database后,表和字段的Description都变成了乱码,如????Google了一些相关文章后,没有很好的解决方法,要么是对MySql的,要么是对Oracle的,没有发现SQL Server 的。

解决方法

开始以为是PD生成的脚本文件编码不对,修改编码为简体中文GB2312也不行;修改数据库的CollationChinese-PRC-CI-AS也不行。后来直接在SQL Server建测试表,添加注释,导出脚本,分别如下所示:

PD生成的注释:

execute sp_addextendedproperty 'MS_Description',

   '附件',

   'user', 'dbo', 'table', 'WF_Attchment'

go

execute sp_addextendedproperty 'MS_Description',

   '附件ID',

   'user', 'dbo', 'table', 'WF_Attchment', 'column', 'AttchmentID'

Go

SQL Server生成的注释:

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'附件ID' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'WF_Attchment', @level2type=N'COLUMN',@level2name=N'AttchmentID'

GO

PD生成的脚本同SQL Server导出的脚本比较后,发现在赋值给注释的Value上了一个N。找到了问题的根源,这下就好办了,我们需要在PD里进行处理。

1.       修改数据库模型的语言属性,位置在PD|Database|Gernate Datebase|Format,修改语言为UTF-8,如下图所示:

2.       修改生成的脚本的注释,修改的地方在:

tools-->resources-->dbms-->sql server 2008打开DBMS属性窗口,在general选项卡中选择Microsoft SQL Server 2008-->script-->objects,可以修改Objects下的Table注释-表注释和Column注释-字段注释,

/表注释/

/默认表注释/

[%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%

:declare @CurrentUser sysname

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%

]

/修改后的表注释/

[%OWNER%?[.O:[execute ][exec ]]sp_addextendedproperty [%R%?[N]]'MS_Description',

   [[N]]%.q:COMMENT%,

   [%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_addextendedproperty [%R%?[N]]'MS_Description',

   [[N]]%.q:COMMENT%,

   [%R%?[N]]'user', [%R%?[N]]@CurrentUser, [%R%?[N]]'table', [%R%?[N]]%.q:TABLE%

]

////////////////////////

/字段注释/

/默认字段注释/

[%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%

:declare @CurrentUser sysname

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%

]

/修改后的字段注释/

[%OWNER%?[.O:[execute ][exec ]]sp_addextendedproperty [%R%?[N]]'MS_Description',

   [[N]]%.q:COMMENT%,

   [%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_addextendedproperty [%R%?[N]]'MS_Description',

   [[N]]%.q:COMMENT%,

   [%R%?[N]]'user', [%R%?[N]]@CurrentUser, [%R%?[N]]'table', [%R%?[N]]%.q:TABLE%, [%R%?[N]]'column', [%R%?[N]]%.q:COLUMN%

]

修改字段注释还有一种方法,如下所示:

/修改后的字段注释/

[%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%

]