SSIS存储过程调用

时间:2013-07-22 12:21:01

标签: sql sql-server stored-procedures ssis

我正在尝试调用一个简单的存储过程,该过程将返回正常测试格式的名称列表,所有这些都在一行中。我传递了两个参数,但无论我如何设置调用,无论是在OLE DB源代码编辑器中,还是在执行SQL任务中。 我的SQL语句必须有一些我缺少的东西b / c我不断收到错误。

我的SQL命令文本是

EXEC [dbo].[spGetEmployerIdCSV]  ?,  ?

我传递的参数与在存储过程@IDType@IDNumber中声明的参数完全相同,它们映射到预定义变量。

每当我尝试从任一类型运行它时,我都会得到一个

  

不支持EXEC SQL构造或语句。

在SSIS中运行存储过程的最佳方法是什么?

谢谢。

5 个答案:

答案 0 :(得分:6)

我无法重新创建您的问题。

我创建了一个已经存在proc的控制流。

control flow

我的执行sql任务配置为

exec sql task

我的参数标签显示

parameter mapping

当我点击运行时,包变为绿色。

我最初的假设是您已经发出信号表明您正在使用存储过程并且错误地提供了EXEC部分。我已经使用SSRS做了类似的事情,但即使通过Expression将IsQueryStoredProcedure更新为True,我也无法重新生成您的错误消息。

如果您正在执行其他/不同/除了我在执行SQL任务中显示的内容之外,您是否可以修改您的问题以描述该过程应显示的所有功能。

答案 1 :(得分:2)

您是否指定了输出参数? 对于2 in / 1 out,您的SQL代码将如下所示:

EXEC [dbo].[spGetEmployerIdCSV] ?, ?, ? OUTPUT

ResultSet必须设置为none!

答案 2 :(得分:1)

我遇到了同样的问题。

执行任务时,请检查“进度”选项卡;这将为您提供“完全成熟”的错误详细信息。

在我的情况下,我没有将我在SQL任务中创建的参数映射到存储过程中的实际参数。

因此,双击SQL任务,单击左侧的参数映射,然后创建参数及其各自的映射。这是截图(2012版):

enter image description here

答案 3 :(得分:0)

在为VS 2013升级到SSDT之后,我遇到了类似的问题(问题出在查找元素上)。 通过使用this answer进行了修复:

EXEC ('dbo.MyStoredProcedure')
WITH RESULT SETS
  (
    (
        MyIntegerColumn INT NOT NULL,
        MyTextColumn VARCHAR(50) NULL,
        MyOtherColumn BIT NULL
    )
  )

答案 4 :(得分:-3)

使用您在MySQL工作台中运行存储过程的相同命令

call();

在执行SQL任务中使用此命令