我有一个包含脚本任务的SSIS包。它当然是通常的Script主类文件,它使用了几个Web服务,因此我也使用WSDL命令行为项目中的那些生成一些代理类。一切正常。
我定义了一些脚本任务使用的只读User ::变量,用于定义两个Web服务的URL路径。
问题:在两个Web服务代理类中,我似乎无法访问Dts变量集合。我已经尝试将using Microsoft.SqlServer.Dts.Runtime;
添加到每个代理类中,但仍然无法访问代理类中的那些Dts变量。
有办法做到这一点吗?
答案 0 :(得分:1)
您将无法在ScriptMain
类以外的任何地方直接访问变量。在实例化它时,必须将变量传递给代理类。
// in the ScriptMain class
YourWsClass ws = new YourWsClass(Dts.Variables["User::YourVariable"].Value.ToString();
class YourWsClass
{
public YourWsClass(String v)
{
_v = v;
}
}
答案 1 :(得分:1)
我能够通过传递ScriptObjectModel将变量传递给类构造函数。
// in the ScriptMain class
YourWsClass ws = new YourWsClass(Dts);
//in the WS class
using Microsoft.SqlServer.Dts.Tasks.ScriptTask;
class YourWsClass
{
public YourWsClass(ScriptObjectModel dts)
{
string _v = (string)dts.Variables["User::YourVariable"].Value;
}
}