前不久写了一篇文章跨数据库数据传输:利用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同意使用可变长度