【问题标题】:SSIS execute sql statement multiple stepsSSIS执行sql语句多步骤
【发布时间】:2021-06-29 22:08:23
【问题描述】:

在我的 SSIS 包中,我有一个带有 2 个语句的执行 SQL 任务:

声明 1:

从 AAA 中选择 coalesce ( max (id), 0)+1 作为 ID

语句 2:

插入 BBB (id) 值 (?)

在第一个语句中,我将结果保存到变量ID,在第二个语句中,我使用这个变量ID 插入到BBB id 列。假设第一个语句的结果应该是4,但是,在我查询表BBB之后,我发现插入到BBB中的是0。

我错过了什么吗?

【问题讨论】:

    标签: ssis execute-sql-task


    【解决方案1】:

    运行第一条语句会为空表生成 1 的结果。

    SSIS 中整数的默认值为 0。

    这会让我相信您没有正确分配执行 SQL 任务的结果。

    Script Task 中插入以通过信息事件打印值

        public void Main()
        {
            bool fireAgain = false;
            string message = "{0}::{1} : {2}";
            foreach (var item in Dts.Variables)
            {
                Dts.Events.FireInformation(0, "SCR Echo Back", string.Format(message, item.Namespace, item.Name, item.Value), string.Empty, 0, ref fireAgain);
            }
    
            Dts.TaskResult = (int)ScriptResults.Success;
        }
    

    或者在第二个Execute SQL Task上设置断点来识别变量的当前值。

    如果值设置正确,那么唯一剩下的故障点是第二个执行 SQL 任务,这意味着您没有映射变量。

    由于您的代码示例使用问号 ? 作为占位符,因此连接管理器是 OLEDB(我们有一个基于零的序数系统)还是 ODBC(我们有一个基于一个的序数)的问题就变成了一个问题。

    如果问题出现在第一步,那么请确保您使用了正确的 0/1 值作为结果列的“名称”

    【讨论】:

      猜你喜欢
      • 2020-01-05
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多