【问题标题】:SSIS read flat file connection on script taskSSIS在脚本任务上读取平面文件连接
【发布时间】:2017-07-31 15:00:38
【问题描述】:

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

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

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

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

我的问题是我不知道如何读取连接字符串的值,而且我在网上找不到任何指向正确方向的东西。

提前致谢。

【问题讨论】:

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


    【解决方案1】:

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

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

    参考:

    据此Microsoft Docs article

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

    【讨论】:

    • 我尝试这样做,但没有成功。还是谢谢
    • @Rambo3 我知道这篇文章很老了,但我修复了代码,因为它没有像你提到的那样工作。祝你好运
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

      我关注this 线程以获取参考。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-12-13
        • 2018-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多