从Mysql搬数据到SQL server报错 The (maximum) expected data length is 28, while the returned data length is 0

前不久写了一篇文章跨数据库数据传输:利用ODBC从MySQL传输数据到SQL server介绍了通过ODBC的方式,把数据从MySQL迁移到SQL Server,但是在迁移的过程中,你会发现很多头疼的报错。

比如下面这条:

Msg 7347, Level 16, State 1, Line 1
OLE DB provider 'MSDASQL' for linked server 'MYSQL' returned data that does not match expected data length for column '[MSDASQL].USED_TIME'. The (maximum) expected data length is 28, while the returned data length is 0

明细最大长度是28,现在返回0条,却报错了,按理说没有超过最大长度啊。然后你会发现不论是更改SQL server的字段格式还是取数的时候各种cast,都是没有效果。这个应该是ODBC驱动造成的,要解决这个问题有两种方式:

 

方法一:.更改MySQL中的字段格式,比如我的报错中used_time字段是char格式的,把它改成varchar就可以了

方法二:.在SQL server执行语句之前加一句DBCC TRACEON(8765)就可以了,这个表示在ODBC同意使用可变长度

你可能感兴趣的:(从Mysql搬数据到SQL server报错 The (maximum) expected data length is 28, while the returned data length is 0)