我需要一些建议如何解决以下任务:
我有一个基于IBM DB2(IBMDA400)的源系统,它有很多表,它们在结构上快速变化 . 我必须将指定的表从DB2加载到MSSQL 2008 R2 Server中 . 因此我认为使用SSIS是最佳选择 .
我的第一次尝试只是添加两个数据源,删除MSSQL中的所有表,并使用“Select * Into @Table From @Table”重新创建它们 . 但是由于无法连接两个OLEDB连接,我无法正常工作 . 我也尝试使用Openrowset语句,但出于安全原因,SQL Server不允许这样做,我不允许更改它 .
我的第二次尝试是从源手动读取表并删除并使用for循环重新创建表,然后通过数据流任务加载数据 . 但我不得不从执行SQL任务获取元数据...所以我没有列名称和类型 .
我无法相信这太难以实现 . 为什么数据流任务上没有“如果不存在则创建表”复选框?
当然我之前在这里搜索过这个问题,但找不到解决方案 .
提前谢谢,Pad
1 回答
这是我最后得到的解决方案:
创建用于选择源表的文件/表 .
重要:在SQL实例上创建链接服务器或为OPENROWSET创建工作Connectionstring(我无法这样做 - 我选择了链接服务器)
查询源文件/表
在结果集中构建循环
使用变量和脚本任务来构建查询
删除目标表
使用INSERT INTO TABLE FROM OPENROWSET构建另一个查询字符串(或者如果您使用了链接服务器OPENQUERY)
执行此声明
完成 . 正如我上面所说,我对此不太满意,但现在应该没问题 . 如果我有另一个解决方案,我会更新这个 .