使用SSIS

时间:2017-06-02 08:21:34

标签: sql-server etl dynamically-generated db2-400 ssis-2008

我需要一些建议如何解决以下任务:

我有一个基于IBM DB2(IBMDA400)的源系统,它有很多表,它们在结构上快速变化。我必须将指定的表从DB2加载到MSSQL 2008 R2 Server中。因此我认为使用SSIS是最佳选择。

我的第一次尝试只是添加两个数据源,删除MSSQL中的所有表并使用" Select * Into @Table From @ Table"重新创建它们。但我无法实现这一点,因为我无法连接两个OLEDB连接。我也尝试使用Openrowset语句,但出于安全原因,SQL Server不允许这样做,我不允许更改它。

我的第二次尝试是从源手动读取表并删除并使用for循环重新创建表,然后通过数据流任务加载数据。但是我不得不从执行SQL任务中获取元数据......所以我没有列名和类型。

我无法相信这太难以实现。如果不存在,为什么没有"创建表"数据流任务上的复选框?

当然我之前在这里搜索过这个问题,但找不到解决方案。

提前致谢, 垫

1 个答案:

答案 0 :(得分:1)

这是我最后得到的解决方案:

  1. 创建用于选择源表的文件/表。
  2. 重要提示:在SQL实例上创建链接服务器或为OPENROWSET创建工作Connectionstring(我无法这样做 - 我选择了链接服务器)
  3. 查询源文件/表
  4. 通过结果集构建循环
  5. 使用变量和脚本任务构建查询
  6. 删除目标表
  7. 使用INSERT INTO TABLE FROM OPENROWSET构建另一个查询字符串(或者如果您使用了链接服务器OPENQUERY)
  8. 执行此声明
  9. 完成。 正如我上面所说,我对此不太满意,但现在应该没问题。如果我有另一个解决方案,我会更新。