将存储过程转换为SSIS包

时间:2012-10-16 12:23:57

标签: ssis

我们要求将SP列表转换为SSIS包。大多数SP执行以下步骤:

  1. 创建一个表并使用'SELECT INTO'语句将数据插入到该表中,该语句有许多连接。
  2. 更新表格 - 这也有很多连接。
  3. 在创建的表上创建索引。
  4. 我们应该采用什么方法?由于SP中没有ETL,我们将每组语句转换为一个Execute SQL任务。这是正确的方法吗?
    我们可以做些什么来改善包装的性能?
    有些SP使用不同的参数多次调用另一个SP(参数在SP中是硬编码的)。哪个SSIS任务适合这里?我尝试使用ExecuteSQL task RetainSameConnection为真。

1 个答案:

答案 0 :(得分:0)

我们将每组语句转换为一个“执行SQL”任务。这是正确的做法吗?

不,鉴于您的声明“长程序不容易管理。另外,希望通过在SSIS包的上下文中调用存储过程来提高性能”,您所完成的只是添加一层开销为了你的电话。

你如何让它变得更好?这将非常依赖你正在做什么。你的一般方法可能看起来像

  1. 创建源和目标OLE DB连接管理器
  2. 创建变量,字符串类型,并使用它来存储正在创建的表的名称
  3. 执行SQL任务 - 这实际上创建了目标表。我想我已经阅读了一个明确的表声明比使用INTO语句创建一个更有效
  4. 将数据流任务连接到该执行SQL任务。使用OLE DB源并将源类型从表更改为查询并调用存储过程。可能需要修改此项以不创建目标表。将OLE DB目标放到画布上,并将目标更改为“表格”或“从变量快速加载视图”(名称近似值),然后选择上面创建的变量。
  5. 更新可能最好留给现有逻辑。把它放在执行sql任务中
  6. 此索引创建也将是一个执行SQL任务。
  7. 所有这些联接的事情仍然缓慢?这可能是一个调整操作。我们需要查看表结构,查询和估计的查询计划。