1

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

  1. 使用“SELECT INTO”语句创建一个表并将数据插入其中,该语句具有许多连接。
  2. 更新表 - 这也有很多连接。
  3. 在创建的表上创建索引。

我们应该在这里使用什么方法?由于 SP 中没有 ETL,我们将每组语句转换为一个Execute SQL任务。这是正确的方法吗?
我们可以做些什么来提高包的性能?
有些 SP 使用不同的参数多次调用另一个 SP(参数在 SP 中是硬编码的)。哪个 SSIS 任务适合这里?我尝试使用ExecuteSQL tasktrue RetainSameConnection

4

1 回答 1

0

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

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

你如何让它变得更好?这在很大程度上取决于在做什么。您的一般方法可能看起来像

  1. 创建源和目标 OLE DB 连接管理器
  2. 创建一个变量,字符串类型并使用它来存储正在创建的表的名称
  3. 执行 SQL 任务 - 这实际上创建了您的目标表。我认为我已经阅读了显式表声明比使用 INTO 语句创建一个更有效
  4. 将数据流任务连接到该执行 SQL 任务。使用 OLE DB 源并将源类型从表更改为查询和调用您的存储过程。这可能需要修改为不创建目标表。将 OLE DB 目标拖放到画布上并将目标从变量快速加载(名称近似)更改为表或视图,然后选择上面创建的变量。
  5. 更新可能最好留给现有的逻辑。只需将其放在执行 sql 任务中
  6. 这个索引创建也将是一个执行 SQL 任务。

所有这些连接仍然进展缓慢?这可能是一个调整操作。我们需要查看表结构、查询和估计的查询计划。

于 2012-10-16T13:38:31.397 回答