You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让SSIS 2008 R2中的数据流任务仅在工作日1减2天执行?

在VS2008 SSIS中实现数据流任务仅在指定日期条件下执行

核心思路

通过脚本任务结合优先约束判断当前日期是否符合“工作日1减2天”的规则,仅当条件满足时触发数据流任务(DFT)执行。

具体实现步骤

1. 添加前置脚本任务

在控制流界面,拖入一个脚本任务,放置在DFT的上游位置。

2. 编写日期判断脚本

双击脚本任务,在“脚本”选项卡点击「编辑脚本」打开VSTA编辑器,在Main方法中编写对应逻辑(以下提供两种常见场景的代码,可根据你的实际需求调整):

场景1:仅在每周第一个工作日(周一)往前推2天(上周六)执行

using System;
using Microsoft.SqlServer.Dts.Runtime;

namespace ST_xxxxxx
{
    [Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
    public class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
    {
        public void Main()
        {
            DateTime currentDate = DateTime.Now.Date;
            // 计算本周一的日期
            DateTime monday = currentDate.AddDays(-(int)currentDate.DayOfWeek + (int)DayOfWeek.Monday);
            // 周一减2天即为目标日期(上周六)
            DateTime targetDate = monday.AddDays(-2);

            // 匹配则标记任务成功,否则失败
            Dts.TaskResult = currentDate == targetDate ? (int)DTSExecResult.Success : (int)DTSExecResult.Failure;
        }
    }
}

场景2:仅在当前为工作日且当前日期减2天仍为工作日时执行

using System;
using Microsoft.SqlServer.Dts.Runtime;

namespace ST_xxxxxx
{
    [Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
    public class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
    {
        // 自定义判断工作日逻辑(排除周六、周日)
        private bool IsWorkDay(DateTime date)
        {
            return date.DayOfWeek != DayOfWeek.Saturday && date.DayOfWeek != DayOfWeek.Sunday;
        }

        public void Main()
        {
            DateTime currentDate = DateTime.Now.Date;
            // 双条件判断:当前是工作日,且往前推2天也是工作日
            bool conditionMet = IsWorkDay(currentDate) && IsWorkDay(currentDate.AddDays(-2));
            Dts.TaskResult = conditionMet ? (int)DTSExecResult.Success : (int)DTSExecResult.Failure;
        }
    }
}

3. 配置优先约束

从脚本任务拖拽箭头连接到DFT,双击箭头打开优先约束编辑器:

  • 「求值运算」选择「表达式和约束」
  • 「约束选项」选择「成功」
  • 确认配置后,只有脚本任务执行成功(日期条件满足)时,DFT才会启动。

注意事项

  • VS2008的SSIS基于.NET Framework 3.5,代码需兼容该版本。
  • 若需排除法定节假日,可在IsWorkDay方法中添加自定义节假日列表进行额外判断。

内容的提问来源于stack exchange,提问作者Trevor McCarthy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 14:20:02