【问题标题】:Dynamic SQL Script path in SSIS Data Flow taskSSIS 数据流任务中的动态 SQL 脚本路径
【发布时间】:2016-09-28 05:24:26
【问题描述】:

我需要将所有 SQL 查询存储在一个文件夹下,并在 SSIS 包中引用以更好地组织我正在使用的 SQL 文件列表,以便我们以后可以轻松更改 SQL 文件而无需重新构建包。这将包括我用于“执行 SQL 任务”的所有查询以及数据流组件下的“OLE DB 数据源”中的查询。

在数据流任务下,而不是将源数据库的 SQL 查询放入查询窗口: 我在 OLE DB 数据源的数据访问模式下看到四个选项- 1. 表或视图 2.视图名称变量表 3. SQL 命令 4. 来自变量的 SQL 命令

我知道我可以使用变量,将查询存储在变量中并在“执行 SQL 任务”中引用它,但我正在寻找一种方法将所有查询存储在 SQL 文件中,并将其存储在数据流组件中以及在“执行 SQL 脚本任务”中。我似乎无法找到一种方法让它在数据流任务中动态化。有人可以帮忙吗?

【问题讨论】:

    标签: sql file dynamic ssis dataflow


    【解决方案1】:

    我认为将它们存储为 sql 文件对于任何类型的场景都没有好处。 根据您的描述,这是我会做的。

    您可以将查询作为 varchar 存储在数据库的表中,而不是作为文件。然后,您可以对结果集进行 foreach 循环,并将每一行映射到变量,然后将其用作数据流中 oledb 数据源的查询。

    因此,创建一个变量并为每个循环创建一个循环,该循环遍历“从 dbo.queries 中选择查询”或其他任何内容。将输出设置为您创建的变量,然后在容器中创建您的数据流,并使用表达式或“来自变量的 SQL 命令”设置源任务。

    至于控制流查询,为什么不将它们作为存储过程,以便在需要时进行更改?

    【讨论】:

    • 谢谢大卫。我的目的是简化执行,所以如果我需要更改 SQL 查询,我可以只更改 SQL 脚本,而无需编辑包。你提供的工作看起来有点复杂。是否有任何简单的方法可以将 SQL 脚本从文件连接到 OLEDB 源组件,而不是将其放入变量或查询窗口中?
    • 我可以想到很多方法来做到这一点,而 SSIS 只是开销。例如,为什么不使用 powershell 运行它们?如果你想要 SSIS,为什么不直接遍历文件并将其内容添加到 sql 命令变量中?
    猜你喜欢
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 2010-12-02
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多