Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SSI在脚本任务中显示变量值_C#_Ssis - Fatal编程技术网

C# SSI在脚本任务中显示变量值

C# SSI在脚本任务中显示变量值,c#,ssis,C#,Ssis,我正在做一些测试,将executesql任务的完整结果集输出到Foreach循环中,如下所示 我只想把我的变量值输出到一个消息框,但是它似乎不起作用 public void Main() { try { // TODO: Add your code here string Variables = Dts.Variables["User::ClientID"].ToString() +

我正在做一些测试,将executesql任务的完整结果集输出到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循环,并在scrip任务中指定只读变量

*更新*

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


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

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

你也可以用

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

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

无需指定范围:
用户
系统
。从每个名称中删除
用户::
。如果它仍然不起作用-你一定是拼错了其中一个名字

您还需要获取值并将其转换为字符串。正确的格式是:
Dts.Variables[“Passphrase”].Value.ToString()
您必须传入正在使用的变量。双击脚本任务,在“脚本任务编辑器”模式窗口中,输入要在“ReadOnlyVariables”或“ReadWriteVariables”中显示的变量。然后您就可以在代码中引用它们了


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

.value


在要连接的字符串中.ToString之前。我在我的上更改了这个,它成功了。

对不起,我不太明白使用string.format是什么意思,0,1是什么。你能发布一个小的工作示例吗?他的意思是使用
string.format
将变量合并到字符串中,而不是简单的连接。g。var archiveFile=string.Format(“{0},{1}”,Dts.Variables[“User::ExpPathArchiveFolder”].Value,Dts.Variables[“User::ExpCurrentFileName”].Value);如果您切换0和1,则字符串将按切换顺序连接。欢迎使用堆栈溢出!这是你的第一篇文章,所以我来复习一下。关于您对try..catch的评论,它可能不是必需的,但是您可以通过在代码周围添加try和catch并查看它是否仍然有效来测试它。如果是这样的话,我建议删除与答案无关的“尝试…捕获”部分。