SSIS在脚本任务中显示变量值

时间:2013-08-01 10:05:19

标签: c# ssis

我正在进行一些测试,将执行SQL任务中的完整结果集输出到Foreach循环中,如下所示

enter image description here

我只想将我的变量值输出到消息框,但它似乎不起作用。

public void Main()
    {

        try
        {

            // TODO: Add your code here
            string Variables = Dts.Variables["User::ClientID"].ToString() +
            Dts.Variables["User::Passphrase"].ToString() +
            Dts.Variables["User::KeyFileName"].ToString() +
            Dts.Variables["User::InboundEncryptionRequired"].ToString() +
            Dts.Variables["User::SftpResponseRequired"].ToString() +
            Dts.Variables["User::OutboundDecryptionRequired"].ToString() +
            Dts.Variables["User::SftpHost"].ToString() +
            Dts.Variables["User::SftpPort"].ToString() +
            Dts.Variables["User::SftpUserName"].ToString() +
            Dts.Variables["User::Active"].ToString() +
            Dts.Variables["User::SftpDownloadFrom"].ToString() +
            Dts.Variables["User::SftpUploadTo"].ToString() +
            Dts.Variables["User::SftpDeleteFilesFromRemote"].ToString() +
            Dts.Variables["User::ConnectionProtocol"].ToString();

            MessageBox.Show(Variables);

        }



        catch (Exception Ex)
        {

            MessageBox.Show(Ex.Message);

        }
    }
}

}

我只是在“集合中找不到元素”或其他东西,即使我知道查询输出了2行。

我还在foreach循环上映射了我的变量,并在scrip task上指定了只读变量。

*更新*

这让我疯了。我已经三次检查了我的变量名,可以确认我得到了完整的结果集。

enter image description here

我从脚本任务变量中删除了User ::但仍然没有运气。

4 个答案:

答案 0 :(得分:8)

您必须传入正在使用的变量。双击脚本任务,然后在“脚本任务编辑器”模式窗口中,输入要在“ReadOnlyVariables”或“ReadWriteVariables”中显示的变量。然后,您就可以在代码中引用它们了。

script task editor

答案 1 :(得分:3)

听起来好像你的一个变量名拼写不正确,并且在数组中找不到它。

你也可以使用

string Variables = String.Format("{0},{1},...",Dts.Variables["User::ClientID"],Dts.Variables["User::Passphrase"],...)

显示值或设置变量字符串。

答案 2 :(得分:3)

您不必指定范围:UserSystem。从每个名称中删除User::。如果它仍然不起作用 - 你必须拼错其中一个名字。

此外,您需要获取值并将其转换为字符串。正确的格式是: Dts.Variables["Passphrase"].Value.ToString()

答案 3 :(得分:2)

我在试图解决类似问题后偶然发现了这一点。我在您的代码中发现的第一个问题是您没有

<强>。价值

在串联的字符串中的.ToString之前。我改变了这一点并且有效。