mysql 那边的数据库表是 latin1 myisam 的 ,现在用mssql2005来查询mysql表的数据是OK的,但是唯独两个字段一查询到就会报错,提示传回无效的资料,那两个字段我是设置成utf-8的,那两个字段存储的是中文,没读那两个字段就不会出错,所以我想说应该是编码的问题,请教一下各位高人,能否转换?或者其他方式解决

解决方案 »

  1.   

    再说一下,我用的是 select * from openquery(配置的远程数据库名称,'查询语句')的方式来进行查询的~
      

  2.   

    -- mysqlmysql> create table tb(id int,data varchar(20),
                chs_data varchar(50) character set 'gbk') character set 'latin1';
    Query OK, 0 rows affected (0.09 sec)mysql> insert into tb values(1,'mysql','小梁爱兰儿');
    Query OK, 1 row affected (0.05 sec)mysql> insert into tb values(2,'mysql','小梁爱兰儿');
    Query OK, 1 row affected (0.00 sec)mysql> select *from tb;
    +------+-------+------------+
    | id   | data  | chs_data   |
    +------+-------+------------+
    |    1 | mysql | 小梁爱兰儿 |
    |    2 | mysql | 小梁爱兰儿 |
    +------+-------+------------+
    2 rows in set (0.00 sec)
    --sql serverCREATE TABLE tb(id int,data VARCHAR(20),chs_data NVARCHAR(20));
    INSERT tb VALUES(1,'sql server',N'小梁爱兰儿');
    INSERT tb VALUES(2,'sql server',N'小梁爱兰儿');
    GOEXEC sp_addlinkedserver 'MySQL','','MSDASQL','My_SQL';
    EXEC sp_addlinkedsrvlogin 'MySQL','false','sa','root','liangck';
    GOSELECT * 
      FROM OPENQUERY(MySQL,'SELECT * FROM mytest.tb') AS A
    JOIN tb AS B
      ON A.id=B.id;GO
    EXEC sp_dropserver 'MySQL','droplogins';
    DROP TABLE tb;
    /*
    id          data                 chs_data                                           id          data                 chs_data
    ----------- -------------------- -------------------------------------------------- ----------- -------------------- --------------------
    1           mysql                小梁爱兰儿                                              1           sql server           小梁爱兰儿
    2           mysql                小梁爱兰儿                                              2           sql server           小梁爱兰儿(2 行受影响)
    */
      

  3.   

    楼主应该把UTF-8的格式转换下。
      

  4.   

    在SQL里执行:   
        
      select   @@client_csname   
        
      如得出:iso_1   
        
      则:   
        
      bcp   test..tt   out   c:\test.txt   -Usa   -P   -Shzsys   -c   -J   iso_1Top
      

  5.   

    现在是这样的情况哦~mysql数据库那边我没办法改~我是从mysql那边抓数据不能改他东西~然后我现在 select * from openquery(配置的远程数据库名称,'查询语句')  一查到那个带中文的字段就出错了~有没办法解决呢?