CSDN=>FAQ=>FAQ 展示
  • 问题内容:排序规则问题,期待高手回答,在线等
  • 原讨论链接:http://community.csdn.net/expert/topicview1.asp?id=5320198
  • 所属论坛:疑难问题     审核组:MS-SQL Server
  • 提问者:hlq8210     解决者:zjcxc
  • 感谢:libin_ftsafe libin_ftsafe zjcxc zlp321002
  • 关键字:疑难问题 MS-SQL Server 乱码 排序 导入 规则 数据 排序规则 ci 包含中文
  • 答案:

    两个不同的库 A库的排序规则是SQL_Latin1_General_CP1_CI_AS
    B 库的排序规则是 Chinese_PRC_CI_AS

    现在A 库有一部分表的数据需要同步到 B来,
    由于排序规则不一样,A 库中包含中文的数据(类型:varchar,char) 同步到B库中时出现乱码,两个库的排序规则都不能改动,数据类型不改为:NVARCHAR
    有没有好的办法让A库到B库包含中文的数据不乱码


    ---------------------------------------------------------------

    那就只能在B库的表创建时,为将要包含中文的列指定排序规则为Chinese_PRC_CI_AS。
    ---------------------------------------------------------------

    并不是让你修改整个库的排序规则,只是设置表中个别字段的排序规则。
    ---------------------------------------------------------------

    试试:
    bcp 从源库导出到文件, 用/N参数
    然后用bcp导入到目的表, 也用/N参数

    对于非unicode数据, 乱码是一种解码错误的表现, 编码按照输入者的系统的编码存放到数据库, 在调用者的系统上, 如果这个编码不能被正确识别(一般是找不到对应的代码页, 或者解码规则不同), 则出现的是乱码.

    对于查询分析器和ODBC查询不正常, 这个是因为进行了"字符数据的转换"

    你试试在查询分析器的工具--选项--连接中, 把"执行字符数据转换"的选择去掉, 确定后, 重新启动查询分析器, 再做你的测试, 这样应该就是正常的了.

    ODBC查询, 在建立DSN的时候, 一样可以设置"执行字符数据转换"这个选项的

    另外, 你试试用sql的导入/导出向导.
    复制的方式选择"在两个sql server数据库之间复制对象和数据"

    最后一步的设置中, 把创建目的对象的选择取消, 保证选择了"应用排序规则", 复制所有对象也取消, 单击对象自己选择要复制的对象
    其他的设置自己看着办吧, 一般可以不选, 因为只是复制数据
    ---------------------------------------------------------------

  • 评价: 有价值 给朵鲜花(3) 无价值 扔个鸡蛋(0)
相关FAQ
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo