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

SSIS脚本任务中C#实现三个行计数变量校验并报错

SSIS脚本任务C#代码修正:比较三个行计数变量

原代码问题分析

  1. 错误直接比较变量名字符串,而非变量存储的实际行计数值
  2. C#不支持a == b == c这类连续比较语法
  3. 先清空变量值再比较,逻辑完全颠倒
  4. 未实现不相等时的错误抛出逻辑

修正后的完整代码

public void Main()
{
    try
    {
        // 读取三个行计数变量的值,转换为整数(若变量是长整型,可改为long和Convert.ToInt64)
        int rowCount1 = Convert.ToInt32(Dts.Variables["User::RowCtn_src1"].Value);
        int rowCount2 = Convert.ToInt32(Dts.Variables["User::RowCtn_src2"].Value);
        int rowCount3 = Convert.ToInt32(Dts.Variables["User::RowCtn_src3"].Value);

        // 判断三个行计数是否完全相等
        if (rowCount1 == rowCount2 && rowCount2 == rowCount3)
        {
            // 三者相等,标记任务成功并清空错误信息
            Dts.TaskResult = (int)ScriptResults.Success;
            Dts.Variables["User::Err"].Value = "";
        }
        else
        {
            // 三者不匹配,生成错误信息并抛出异常触发SSIS错误流程
            string errorMsg = $"行计数不匹配:src1={rowCount1}, src2={rowCount2}, src3={rowCount3}";
            Dts.Variables["User::Err"].Value = errorMsg;
            throw new Exception(errorMsg);
            // 若不需要抛出异常,也可直接标记任务失败:
            // Dts.TaskResult = (int)ScriptResults.Failure;
        }
    }
    catch (Exception ex)
    {
        // 捕获转换或其他异常,记录错误并标记任务失败
        Dts.Variables["User::Err"].Value = $"执行错误:{ex.Message}";
        Dts.TaskResult = (int)ScriptResults.Failure;
    }
}

关键配置注意事项

  • 把User::RowCtn_src1、User::RowCtn_src2、User::RowCtn_src3添加到脚本任务的ReadOnlyVariables列表
  • 若要修改User::Err变量,需将其加入ReadWriteVariables列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:27:26