SSIS执行SQL任务错误没有返回任何行

时间:2016-09-12 04:27:08

标签: ssis ssis-2008

我对SSIS有点新意,并根据采购订单发送邮件到特定商店 - >采购单号码。

步骤如下:

1)从特定文件夹中获取XML文件

2)从该文件中获取PONumber

3)编写查询以获取PONumbers的所有商店电子邮件地址

4)发送邮件至特定餐厅

截图下面是我创建的一个包。我遇到的唯一问题是执行SQL任务,不知道究竟是什么原因?

请问如何调试这个?这之前工作正常,但突然间它开始显示错误。

IMAGE1

IMAGE5

2 个答案:

答案 0 :(得分:0)

执行SQL任务期待来自查询的结果,但是没有得到任何结果。也许您可以使用SQL Server探查器来捕获在SQL Server上执行的确切SQL。然后,您可以在查询窗口中使用该SQL来解决它返回的内容或为什么它没有给出任何结果。

编辑。 有了您当前的附加信息,有趣的地方是"参数映射"页面,您没有包含。你应该将SSIS变量链接到那里的查询参数,如Matt所解释的那样。 SSIS不会自动链接SSIS中的变量并自动查询,即使它们具有相同的名称。

答案 1 :(得分:0)

@dvlpr是正确的,当执行SQL任务1需要单个结果时,您的问题是没有结果。

您粘贴的代码有点不清楚哪些代码在哪里,但我假设第一部分是您在SSIS执行任务中使用的代码,后者是SSMS中的示例。如果是这种情况,问题是您在脚本本身中为变量赋值为0,我假设没有PONUMBER为0:

$('#left tbody').append(row)

如果要从第一个数据流任务传入PONUMBER,则需要将其加载到变量,然后在执行SQL任务中使用该变量,并确保在执行此操作时正确设置参数映射。这里有一个关于参数的SO问题,这将有助于How to pass variable as a parameter in Execute SQL Task SSIS?这里是使用数据流任务中的表达式任务来设置变量值SSIS set result set from data flow to variable(注意使用它被添加的未接受的答案之后是2012年以上,而原作是2008年)

接下来,除非您只保证1个结果,否则您还需要将TOP 1添加到您的select语句中,因为如果您获得的结果超过1,则会再次出现不同的错误。

编辑根据所有评论:

因此配置看起来像是在使用ADO.NET连接,它允许您使用命名参数。如果您不使用它(https://msdn.microsoft.com/en-us/library/cc280502.aspx),则存在限制。参数映射看起来正确,结果集应该没问题。至于你的错误我不知道因为你没有发布确切的错误所以我不知道是什么问题。如果将ADO.Net与映像中的当前“执行SQL任务”配置一起使用,则会遇到一些问题。 1您试图将要传递的变量声明为不起作用的参数,您需要删除该DECLARE语句。我怀疑你真正需要做的就是修改你的SQL输入:

Declare @POID as Varchar(50)
Set @POID = 0
WHERE    (BizTalk_POA_HEADER.PONUMBER = @POID)

只是摆脱声明@POID和SET = 0有几个原因1,因为当你有设置参数映射时它是多余的,2 SSIS不喜欢它并且会抛出错误,3因为你正在设置值为0表示它始终为0 .....