SSIS在脚本任务

时间:2017-07-31 15:00:39

标签: c# sql-server ssis etl ssis-2008

我正在研究2008 SSIS,我需要读取一个平面文件,以便我可以访问其内容(有3个目录路径),因此我可以将这3个路径存储到变量中。

平面文件将在3个不同的服务器中,根据我正在处理的实例(dev,qa,production),所以我不能只将路径写入变量,因为我必须重写每次我需要在不同的实例中部署解决方案时的值。

我过去尝试过的是使用Directory.GetCurrentDirectory()读取平面文件,但我无法调试,并且在VS2008上使用F5 / run包不起作用(我读过它在VS上不起作用但是一旦你部署了它就可以正常工作了,但是我没有办法证明它但是要尝试)。

所以,我发现,如果我可以读取保存在平面文件连接上的路径并将其保存在字符串变量中,我可以在部署包后修改.config文件中的连接字符串值,并读取它的内容就像一个普通的平面文件。

我的问题是我无法弄清楚如何读取连接字符串值,我找不到任何在线指向正确方向的内容。

提前致谢。

3 个答案:

答案 0 :(得分:1)

您需要类似C#Script任务的东西。您可以在那里动态修改连接字符串。在脚本中,您可以修改(如果我没记错的话)Dts.Connections.["YourConnection"].ConnectionString

的值

答案 1 :(得分:1)

要从脚本任务访问连接管理器信息,可以使用Dts.Connections属性,只需声明一个字符串变量,然后读取connectionstring属性:

string cs;
cs = Dts.Connections["myFlatFileConnection"].AcquireConnection(Dts.Transaction);

<强>参考:

根据此Microsoft Docs article

  

连接管理器提供对包中已配置的数据源的访问。欲获得更多信息。   Script任务可以通过Dts对象的Connections属性访问这些连接管理器。 Connections集合中的每个连接管理器都存储有关如何连接到基础数据源的信息。 Read more (+examples)

答案 2 :(得分:1)

由于似乎没有任何效果,我最终做了以下事情:

  • 在数据库
  • 的参数表中插入了我需要的值
  • 生成了执行SQL任务
  • 将该任务的结果分配给变量

我花了一整天,但我终于明白了。

我跟着this帖子进行了参考。