声明和移动 C# 变量 SSIS

本文关键字:变量 SSIS 移动 声明 | 更新日期: 2023-09-27 18:34:01

谁能告诉我如何将 c# 脚本 SSIS 任务的变量的值设置为包变量?示例:我们有一列的表格。在sql任务中,我们将其作为对象变量获取到完整的结果集。然后我们将这个包变量传递给脚本任务。在此之后,我们进行一些数据操作:

using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using System.Data.OleDb;
namespace ST_81cd1d2d439843b086cf3eb4d3b22d66.csproj
{
[System.AddIn.AddIn("ScriptMain", Version = "1.0", Publisher = "", Description = "")]
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
    #region VSTA generated code
    enum ScriptResults
    {
        Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
        Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
    };
    #endregion

    public void Main()
    {
        OleDbDataAdapter A = new OleDbDataAdapter();
        DataTable dt = new DataTable();
        A.Fill(dt, Dts.Variables["User::i"].Value);
        int i;
        foreach (DataRow row in dt.Rows)
        {
            object[] array = row.ItemArray;
            i = (int)array[0];
            i += 1;
        }
        //Dts.TaskResult = (int)ScriptResults.Success;
    }
}
}

如何将脚本任务的变量移动到另一个SQL任务以将数据插入MS SQL目标表?我的意思是它应该是新的对象包变量还是我们第一个对象变量的所有列的新变量?如何正确地将完整的数据集或所有变量的值从 c# 脚本任务移动到 sql 任务?

非常感谢。

是否有任何将对象转换为数据表的功能?

    public void Main()
    {
        OleDbDataAdapter A = new OleDbDataAdapter();
        DataTable dt = new DataTable();
        A.Fill(dt, Dts.Variables["User::i"].Value);
        A = (DataTable)Dts.Variables["User::o"];
        int i;
        foreach (DataRow row in dt.Rows)
        {
            object[] array = row.ItemArray;
            i = (int)array[0];
            i += 1;
        }
        //Dts.TaskResult = (int)ScriptResults.Success;
    }

声明和移动 C# 变量 SSIS

在脚本任务中实际创建的任何变量都不能"导出"到包变量。

执行所需操作的正确方法是从两个包变量开始,一个用于脚本任务之前,另一个用于脚本任务之后。 既然你从User::i开始,让我们称第二个User::o("o"代表"out")。

您可以像以前一样填充User::iUser::o留空,将两个变量传递给脚本任务,但请确保User::oRead/Write变量,而不是只读变量。

然后在脚本任务中,不要创建名为 dt 的新数据表,而是使用 User::o 作为新数据表,从 User::i 填充它,并对其执行操作。

脚本任务完成后,包变量User::o将包含所需的结果。