2017-03-18 18 views
2

此代码在SSIS编辑器和SSMS中运行并从目录运行。执行SQL任务在开发人员和SSMS中工作,但在SQL Server代理中出错

下面是代码:

declare @maxDate as date 

select @maxDate = cast(max([Date]) as date) 
from [dbo].[sometable] 
--print @maxDate 

declare @currDate as date 
select @currDate = cast(getdate() as date) ; 
--print @currDate 

if @maxDate <> @currDate 
BEGIN 
    THROW 55000, 'Staging has not run for today!',1 ; 
END 

错误是:

enter image description here

+3

您需要将整个错误信息以文本形式发布 – TheGameiswar

+1

您确定此错误是由此Sql任务引发的!请给我们原始代码 – Hadi

+1

如果您将日期添加到所投掷的错误消息中,您会知道是什么原因造成的。 –

回答

0

当查询在SSMS运行结果将类似于下面如图一所示。

Figure1

图1 - 结果在SSMS运行原来的查询

有返回到邮件标签的东西。

如果您在SSIS中使用执行SQL任务(这里的示例来自Visual Studio 2015)。当您选择该任务时,您可以选择返回结果集,该结果集可以是单个结果集或完整结果集。有关这些选项的设置,请参见图2。

enter image description here

图2 - 示出了设置为返回结果的其中选择哪种类型。

根据错误消息,执行SQL任务期望返回结果集。结果集是查询在SSMS中运行时在结果选项卡中返回的数据。请参见图3,查看一行,一个字段结果集的示例。

enter image description here

图3 - 修订后的查询,返回单列结果集

一旦任务已被配置为返回结果集可以与数据集工作。例如,将单个值分配给SSIS变量,并根据该值采取操作。这article给出了一些可以做什么的想法,或这answer

相关问题