2

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

在此处输入图像描述

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

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 循环上映射了我的变量,并在脚本任务上指定了只读变量。

* 更新 *

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

在此处输入图像描述

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

4

4 回答 4

8

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

脚本任务编辑器

于 2013-11-19T19:21:03.503 回答
3

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

你也可以使用

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

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

于 2013-08-01T10:10:54.287 回答
3

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

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

于 2013-08-01T12:00:53.753 回答
2

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

。价值

在您要连接的字符串中的 .ToString 之前。我在我的身上改变了这个,它起作用了。

于 2015-02-05T13:05:47.310 回答