在BIDS中使用存储过程作为OLE DB源

时间:2010-12-08 11:43:06

标签: sql stored-procedures ssis

我正在测试SSIS包和存储过程,因为我只是一个初学者。我需要做的是使用我在源数据库上安装的存储过程来返回数据集然后我需要一个ssis包来使用存储过程返回的数据集作为OLE DB源来填充第二个目标表。

基本上我有2张桌子: - test_source - test_destination

test_source有一个名为Companies with 3 rows的表 - (ID,Name,Established)。我已经设置了一个存储过程(spGetCompanies)来将该表中的所有记录返回到结果集中。

然后在BIDS中我有一个SSIS包,它从test_source表(在本例中是spGetCompanies SP)获取数据并将其插入到test_destination表中。

有人可以告诉我如何使用spGetCompanies存储过程作为OLE DB源吗?

奇安

3 个答案:

答案 0 :(得分:6)

说明您已设置数据连接,请执行以下操作:

  1. 双击您的OLEB源
  2. 选择您的连接管理器项
  3. 选择数据访问模式为“SQL命令”
  4. 输入您的SQL命令以执行您的SP(例如exec usp_myproc 1234)。
  5. 点击“预览”。您应该返回数据集。
  6. 点击“确定”
  7. 完成

答案 1 :(得分:3)

您可以在set FMTONLY off;之前尝试exec sp。为我工作:))

答案 2 :(得分:2)

如同Jamie Thomson在此解释的那样,并不总是可以在OLEDB数据源中使用存储过程:https://web.archive.org/web/20141215063233/http://consultingblogs.emc.com/jamiethomson/archive/2005/12/09/2480.aspx

基本上,由于sprocs没有关联的元数据,SSIS会尝试通过查看sproc并抓取第一个select语句来猜测元数据。这可能是不准确的,也可能是不可能的(例如,在SQL-CLR proc的情况下)。

答案应为:如果您幸运,按下预览后,您可以按确定。