【问题标题】:Using Stored Procedure As OLE DB Source In BIDS在 BIDS 中使用存储过程作为 OLE DB 源
【发布时间】:2010-12-08 11:43:05
【问题描述】:

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

基本上我有 2 张桌子: - 测试源 - test_destination

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

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

谁能帮忙告诉我如何使用 spGetCompanies 存储过程作为 OLE DB 源?

【问题讨论】:

    标签: sql stored-procedures ssis


    【解决方案1】:

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

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

    完成

    【讨论】:

    • 因此,如果我有一个存储过程标题 spGetCompanies,我会简单地将查询放入:“EXEC spGetCompanies”吗?
    • 是的。 “预览”选项对于测试这个非常有用。
    • 非常感谢詹姆斯!我在那里尝试过,它似乎可以按我的需要工作! :D
    • 没问题。很高兴能帮上忙
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      答案应该是:如果你幸运,在你按下预览后你可以按下确定。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多