我需要使用SSIS 2008包将数据从远程mySQL数据库复制到MSSQL Server 2008数据库。我在mySQL数据库中有一些Timestamp字段给我带来了问题。当我排除时间戳字段时,我设法很好地复制数据。在OLE DB目标输入 - 输入列上,mySQL数据库上的时间戳字段显示为具有数据类型DT_Bytes。
我收到错误OLE DB记录可用 来源:“Microsoft SQL Server Native Client 10.0”Hresult:0x80040E21说明:“多步OLE DB操作生成错误。检查每个OLE DB状态值,如果可用。没有工作。” [OLE DB Destination [784]]错误:无法创建OLE DB访问者。验证列元数据是否有效。
我对mySQL源的select语句有一个select case来处理它的0个日期; SELECT case modified_date when day(modified_date)= 0然后'1990-01-01 00:00:00'否则修改_date end从mySQLTableName修改
答案 0 :(得分:1)
问题肯定在于您的数据类型。打开目标组件进行编辑。转到映射选项卡。将鼠标悬停在每个列映射上,首先是源列,然后是目标。工具提示将显示每列的数据类型。其中一个不匹配。
这很可能是你的时间戳字段,但可能不是,所以我不会推测。
在任何情况下,要使它们匹配,请在源和目标之间添加数据转换组件,并将有问题的源列重新转换为要插入SQL Server的数据类型。 (如果重铸也会导致错误,那么它将比这个更有帮助!)