如何将值表从 SSIS 传递给存储过程?

Mac*_*ika 1 sql-server-2008 sql-server ssis

我对 SSIS 真的很陌生,所以我为“愚蠢”的问题道歉。我知道开放式的“最佳实践”问题很不受欢迎,所以我会尽量具体。

我有一个基本的 SSIS 包,它将数据从一个 SQL 数据库移动到另一个 SQL 数据库。在数据流任务部分中,只有很少的数据转换和一个过滤器在进行。我一直试图想出一种将数据写入目的地的好方法,但它不能直接进入“最终”表(就像我在数据流目的地任务中所做的那样)。我更愿意将它作为变量传递给存储过程。我看到两个选项,我都不喜欢这两个选项:

  1. 我可以使用 OLE DB 命令并逐行循环我的数据,为每个数据运行存储过程。
  2. 我可以将数据写入临时表并从控制流部分调用存储过程。

对于选项 1,必须遍历每个数据行似乎非常糟糕。有没有办法调用存储过程并传递给它一个表?

我在工作中有人告诉我不要使用临时表,所以选项 2 似乎不在表中。我想如果我有理由使用选项 2,作为“最佳实践”,我可能能够说服他们让我以这种方式加载数据。

我错过了什么吗?有没有其他方法可以解决这个问题?如果您能在答案中附上原因,将不胜感激,因为我正在尝试理解押韵和原因。

编辑:为了澄清,我试图找到一种传递表值参数的好方法。

Jon*_*gel 6

有没有办法调用存储过程并传递给它一个表?

如果您使用的是 SQL Server 2008 或更高版本,则有:表值参数 (TVP)

我已经写了一篇关于如何在 SSIS 中使用 TVP 的博客。本质上,您必须在脚本组件中使用 ADO.NET。虽然这不是最漂亮的解决方案,但它可以相对干净地完成工作,所有代码都集中在一个地方。