如何停止基于存储过程输出的程序包执行?

| 我有一个SSIS程序包,第一个任务执行一个存储过程以验证运行日期不是假期。如果是假期,则返回计数为1的记录集。 如果记录计数为1,我希望能够停止SSIS,但是如果记录计数为零,则可以继续运行。我不知道实现此目标的最佳方法。我应该在包装中添加什么控制流程项目? 我是SSIS的新手,所以我不知道要添加什么项目。任何帮助都会很棒。     
已邀请:
        一种很好的方法是创建一个Execute SQl任务,以用于设置变量@Holiday的值。然后通过右键单击绿线本身并单击编辑,将执行Execute SQl任务的成功流程线更改为成功和约束。选择“表达式和约束”作为评估操作,然后为表达式添加类似于以下内容的表达式:
@Holiday == 0
    
        这是一个可能的选项,可以为您提供实现此目标的想法。该示例通过检查包含假日列表的表来检查今天的日期是否为假日。仅当今天不是假日时,其余的包任务才会执行。该示例使用
SSIS 2008 R2
SQL Server 2008 R2
数据库。 分步过程: 使用“ SQL脚本”部分下给出的脚本创建名为“ 3”的表和名为“ 4”的存储过程。如屏幕截图1所示,填充表格。 在SSIS包上,创建两个名为
RecordCount
SQLProcedure
的变量。如屏幕截图2所示,为它们填充值。此外,创建一个OLE DB连接以连接到SQL Server数据库。在此示例中,我将其命名为SQLServer。请参阅屏幕截图3。该示例使用数据源而不是普通连接。这就是为什么屏幕截图中的图标不同。 在SSIS包上,放置一个
Data Flow task
,并在数据流任务中放置一个
OLE DB source
Row count transformation
。请参阅屏幕截图4。 如屏幕截图5和6中所示配置ѭ10。这将执行存储过程并获取结果。 如屏幕截图7所示配置ѭ9。 在ѭ12上,我又放置了一些虚拟任务,如屏幕截图8所示。 右键单击数据流任务和下一个任务(序列容器)之间的连接器,如屏幕快照#9所示。 如屏幕截图10所示配置ѭ13。 屏幕截图#11显示了包执行情况,在with3ѭ表中显示的是今天的日期(
June 16, 2011
),标记为假日。当然,除非休假,否则2011年6月16日不是我工作的假期。 更改表数据,如屏幕截图12所示。 屏幕截图13显示了execution3ѭ表中没有今天日期(
June 16, 2011
)的软件包执行情况。 希望能有所帮助。 SQL脚本:
CREATE TABLE [dbo].[Holidays](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [HolidayDate] [datetime] NULL,
 CONSTRAINT [PK_Holidays] PRIMARY KEY CLUSTERED ([Id] ASC)
) ON [PRIMARY]
GO

CREATE PROCEDURE [dbo].[CheckTodayIsHoliday]
AS
BEGIN

    SET NOCOUNT ON

    SELECT  HolidayDate
    FROM    dbo.Holidays
    WHERE   DATEDIFF(DAY, HolidayDate, GETDATE()) = 0   
END
GO
屏幕截图1: 屏幕截图2: 屏幕截图3: 屏幕截图4: 屏幕截图5: 屏幕截图6: 屏幕截图7: 截图8: 屏幕截图9: 屏幕截图#10: 屏幕截图#11: 屏幕截图#12: 截图13:     

要回复问题请先登录注册