热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据库排序规则的问题

数据库的collation在安装使用默认就已经很好了。比如简体中文环境下,安装SQLServer时,默认是Chinese_PRC_CI_AS,英文环境下是SQL_Latin1_Gener

数据库的collation在安装使用默认就已经很好了。比如简体中文环境下,安装SQL Server时,默认是Chinese_PRC_CI_AS,英文环境下是SQL_Latin1_General_CP1_CI_AS。 在大多数据情况下,默认的选项已经其中上满意我们的需求,但如果要支持多国语言,那么就只能选择支持unicode编码的SQL_Latin1_General_CP1_CI_AS,否则会有乱码,而应用程序查询/更新数据也需要在前加N作为unicode字符的标志。我想很多人都没有太留意这问题吧。


其中一个例子是实例级别和数据库级别的collation不一致,也可能造成一些意想不到的问题。比如所有用户数据库都共享的tempdb,如果有用户数据库的collation与tempdb不同,使用临时表或表变量可能会出现问题。


另一个例子如下(SQL Server 2008R2),登录名test1映射的数据库的collation与实例的collation不一致,打开登录名的属性――安全对象,报了个468的错误提示。


wKioL1dySQ6R2BZCAABrhEc2EgU205.png-wh_50

Figure-1: 登录名的属性


wKiom1dySQ7BiQf6AABIOhVwXVU672.png-wh_50

Figure-2: 报468错误


所以最好还是数据库与实例的collation一例。在数据库规划时,建议全部使用SQL_Latin1_General_CP1_CI_AS,虽然应用程序要加N,但为了以后的扩展,还是值得这样做的。



本文出自 “FishParadise” 博客,请务必保留此出处http://fishparadise.blog.51cto.com/11284420/1793732


推荐阅读
author-avatar
zhaoxiao2012_549
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有