今天在工作中遇到了一个比较难得的问题,关于字符集匹配。
基本情况是这样:
在两个数据库之间导数据,由A->B的过程中,所有的汉字都变成了乱码....
第一反应就是两个数据库间的字符集被修改成不一致的了..因为这个程序原来一直都是正常的,也只是最近才出现的问题
很大的可能性就是其中A数据库的字符集被修改了..
于是检查数据库的字符集.. 没有问题..两者匹配..
又怀疑是SQL中有字段的 collate没有加上导致,原来就是当心这个问题,把所有的涉及两个数据库间比较的字段都加上了
指定的字符集,会不会那个地方漏了..检查一遍... no problem
现在想其实没有必要检查程序的问题,如果是字符集无法比较导致的问题,应该是直接报错,而不是乱码,当时有点乱了
最后想到了一个地方,在B数据库上如果要将A库中的数据抓出来,我们一般会建一个linked server来使两个数据库关联,
使B可以访问A....
检查,发现在linked server中有一个属性,如下图有一个 Use Remote Collation的选项没有勾上,勾上后一切OK