当我执行
USE SQLBak
SELECT '合计' --出来的是“合?”
但是当我
USE master
SELECT '合计' --出来的是“合计”
上网查了一下貌似是排序规则的问题
前者Chinese_*_Stroke_CI_AS,后者Chinese_PRC_CI_AS
我想把恢复的那个的排序也改成Chinese_PRC_CI_AS,但是找不到好的办法,所以来请教大家了。
也不知道是不是排序这个原因,我主要是想解决乱码这个问题,谢谢大家了,新年快乐!
16 个解决方案
#1
http://msdn.microsoft.com/en-us/library/ms174269.aspx
alter database database name
collate collation_name
#2
这个应该有关系,因为这个不单单是排序规则,还设计到编码问题
ALTER DATABASE [SQLBak] COLLATE Chinese_PRC_CI_AS
ALTER DATABASE [SQLBak] COLLATE Chinese_PRC_CI_AS
#3
这个我也试过了
alter database SQLBak collate Chinese_PRC_CI_AS
结果是,在2008里面:无法用排它锁锁定该数据库,以执行该操作。更改失败...
2005里面是:对象'fnSplitTbl' 依赖于 数据库排序规则。还有这两个也依赖fnSplit,fnSplitTable
#4
alter collation后已有的对象还是保持原来的collation.
可以参考一下步骤
1.script出该数据库里所有对象
2.drop掉该数据库里所有对象
3.alter database 指定新的collation
4.重新创建所有对象
可以参考一下步骤
1.script出该数据库里所有对象
2.drop掉该数据库里所有对象
3.alter database 指定新的collation
4.重新创建所有对象
#5
你要修改数据库的排序规则的话,要先删除索引,修改字段的排序规则,然后修改数据库的排序规则,最后把索引加上去
#6
你还是新建一个数据库将原来数据库的脚本倒出来在新数据库创建,之后将源数据导入。这样肯定不会有问题。
因为即使你修改了数据库的排序规则,表的排序规则还是没改的。
因为即使你修改了数据库的排序规则,表的排序规则还是没改的。
#7
来人哪
#8
#9
新建数据库,然后导脚本再导数据。
一旦有了依赖,改排序规则将会非常麻烦,我搞过,几天都没搞好。另外,排序规则分实例级别、数据库级别、列级别和语句级别,单纯alter database不能保证完全没问题。所以最好还是新建。如果是SQLServer2012,还有一个新功能【部分数据库】,听说可以解决多语言共存的问题。
一旦有了依赖,改排序规则将会非常麻烦,我搞过,几天都没搞好。另外,排序规则分实例级别、数据库级别、列级别和语句级别,单纯alter database不能保证完全没问题。所以最好还是新建。如果是SQLServer2012,还有一个新功能【部分数据库】,听说可以解决多语言共存的问题。
#10
try this,
USE SQLBak
SELECT N'合计'
#11
这个好,什么意思?
#12
以Unicode字符串显示,其实数据本身没有乱码.
#13
那怎么搞成正常的?
#14
#15
已经存入数据库中的数据就算后面改成Unicode也还是乱码,只能重新录入
#16
学习了!
#1
http://msdn.microsoft.com/en-us/library/ms174269.aspx
alter database database name
collate collation_name
#2
这个应该有关系,因为这个不单单是排序规则,还设计到编码问题
ALTER DATABASE [SQLBak] COLLATE Chinese_PRC_CI_AS
ALTER DATABASE [SQLBak] COLLATE Chinese_PRC_CI_AS
#3
这个我也试过了
alter database SQLBak collate Chinese_PRC_CI_AS
结果是,在2008里面:无法用排它锁锁定该数据库,以执行该操作。更改失败...
2005里面是:对象'fnSplitTbl' 依赖于 数据库排序规则。还有这两个也依赖fnSplit,fnSplitTable
#4
alter collation后已有的对象还是保持原来的collation.
可以参考一下步骤
1.script出该数据库里所有对象
2.drop掉该数据库里所有对象
3.alter database 指定新的collation
4.重新创建所有对象
可以参考一下步骤
1.script出该数据库里所有对象
2.drop掉该数据库里所有对象
3.alter database 指定新的collation
4.重新创建所有对象
#5
你要修改数据库的排序规则的话,要先删除索引,修改字段的排序规则,然后修改数据库的排序规则,最后把索引加上去
#6
你还是新建一个数据库将原来数据库的脚本倒出来在新数据库创建,之后将源数据导入。这样肯定不会有问题。
因为即使你修改了数据库的排序规则,表的排序规则还是没改的。
因为即使你修改了数据库的排序规则,表的排序规则还是没改的。
#7
来人哪
#8
#9
新建数据库,然后导脚本再导数据。
一旦有了依赖,改排序规则将会非常麻烦,我搞过,几天都没搞好。另外,排序规则分实例级别、数据库级别、列级别和语句级别,单纯alter database不能保证完全没问题。所以最好还是新建。如果是SQLServer2012,还有一个新功能【部分数据库】,听说可以解决多语言共存的问题。
一旦有了依赖,改排序规则将会非常麻烦,我搞过,几天都没搞好。另外,排序规则分实例级别、数据库级别、列级别和语句级别,单纯alter database不能保证完全没问题。所以最好还是新建。如果是SQLServer2012,还有一个新功能【部分数据库】,听说可以解决多语言共存的问题。
#10
try this,
USE SQLBak
SELECT N'合计'
#11
这个好,什么意思?
#12
以Unicode字符串显示,其实数据本身没有乱码.
#13
那怎么搞成正常的?
#14
#15
已经存入数据库中的数据就算后面改成Unicode也还是乱码,只能重新录入
#16
学习了!