【问题标题】:SSIS Stored Procedure CallSSIS 存储过程调用
【发布时间】:2013-07-21 04:18:21
【问题描述】:

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

我的 SQL 命令文本是

EXEC [dbo].[spGetEmployerIdCSV]  ?,  ?

我传递的参数完全按照它们在存储过程中声明的方式列出,@IDType@IDNumber,它们映射到预定义的变量。

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

不支持 EXEC SQL 构造或语句。

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

谢谢。

【问题讨论】:

标签: sql sql-server stored-procedures ssis


【解决方案1】:

我无法重现您的问题。

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

我的执行 sql 任务配置为

我的参数选项卡显示

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

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

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

【讨论】:

  • 谢谢blinkc。我真的很感谢你在这方面的帮助。我发现问题是,我最初试图将 varchar(max) 导入到我的变量中,然后将其传递到存储过程中。我发现显然 SSIS 和(最大)长度设置根本不能很好地协同工作。它导致我的整个数据导入失败,因此不允许其余数据流动。一旦我硬设置长度,它就可以正常工作,使用您提供的存储过程查询帮助。再次感谢您!
  • 是的,这会导致问题,因为 SSIS 有自己的数据类型。可能使用了DT_STR,它是一个以null结尾的ANSI/MBCS字符串,最大长度为8000个字符。 (如果列值包含额外的空终止符,则字符串将在第一个空值出现时被截断。)SQL Server varchar(max) 最多存储 2 147 483 647 (2GB) - 更多!
【解决方案2】:

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

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

ResultSet 必须设置为 none!

【讨论】:

  • 这似乎也不起作用。您的答案示例是在执行 SQL 任务中使用,还是在数据流任务/OLE DB 源编辑器中使用?如果我在源代码编辑器中这样设置它,它只是拒绝接受更多参数。如果从 SQL 任务中显示“不支持 EXEC SQL 构造或语句。”
【解决方案3】:

我遇到了同样的问题。

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

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

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

【讨论】:

    【解决方案4】:

    升级到 VS 2013 的 SSDT 后,我遇到了类似的问题(问题在于查找元素)。 使用this answer修复:

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

    【讨论】:

      【解决方案5】:

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

      调用();

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

      【讨论】:

      • 这没有被标记为 MySQL
      猜你喜欢
      • 2015-09-21
      • 1970-01-01
      • 1970-01-01
      • 2017-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-22
      相关资源
      最近更新 更多