日期:2014-05-17  浏览次数:20695 次

---------------数据库排序规则修改------------------------------
我恢复了个数据库备份文件SQLBak在我的数据库中
当我执行
USE SQLBak
SELECT '合计'    --出来的是“合?”
但是当我
USE master
SELECT '合计'    --出来的是“合计”

上网查了一下貌似是排序规则的问题
前者Chinese_Taiwan_Stroke_CI_AS,后者Chinese_PRC_CI_AS

我想把恢复的那个的排序也改成Chinese_PRC_CI_AS,但是找不到好的办法,所以来请教大家了。
也不知道是不是排序这个原因,我主要是想解决乱码这个问题,谢谢大家了,新年快乐!
sql?server 排序 乱码

------解决方案--------------------
http://msdn.microsoft.com/en-us/library/ms174269.aspx

alter database database name
 collate collation_name

------解决方案--------------------
这个应该有关系,因为这个不单单是排序规则,还设计到编码问题

ALTER DATABASE [SQLBak] COLLATE Chinese_PRC_CI_AS
------解决方案--------------------
alter collation后已有的对象还是保持原来的collation.
可以参考一下步骤
1.script出该数据库里所有对象
2.drop掉该数据库里所有对象
3.alter database 指定新的collation
4.重新创建所有对象
------解决方案--------------------
你要修改数据库的排序规则的话,要先删除索引,修改字段的排序规则,然后修改数据库的排序规则,最后把索引加上去
------解决方案--------------------
你还是新建一个数据库将原来数据库的脚本倒出来在新数据库创建,之后将源数据导入。这样肯定不会有问题。 

因为即使你修改了数据库的排序规则,表的排序规则还是没改的。
------解决方案--------------------
新建数据库,然后导脚本再导数据。
一旦有了依赖,改排序规则将会非常麻烦,我搞过,几天都没搞好。另外,排序规则分实例级别、数据库级别、列级别和语句级别,单纯alter database不能保证完全没问题。所以最好还是新建。如果是SQLServer2012,还有一个新功能【部分数据库】,听说可以解决多语言共存的问题。
------解决方案--------------------
try this,

 USE SQLBak
 SELECT N'合计'

------解决方案--------------------
以Unicode字符串显示,其实数据本身没有乱码.