C# SSI在脚本任务中显示变量值
我正在做一些测试,将executesql任务的完整结果集输出到Foreach循环中,如下所示 我只想把我的变量值输出到一个消息框,但是它似乎不起作用C# SSI在脚本任务中显示变量值,c#,ssis,C#,Ssis,我正在做一些测试,将executesql任务的完整结果集输出到Foreach循环中,如下所示 我只想把我的变量值输出到一个消息框,但是它似乎不起作用 public void Main() { try { // TODO: Add your code here string Variables = Dts.Variables["User::ClientID"].ToString() +
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并查看它是否仍然有效来测试它。如果是这样的话,我建议删除与答案无关的“尝试…捕获”部分。