SSIS 数据流任务中的动态 SQL 脚本路径
Posted
技术标签:
【中文标题】SSIS 数据流任务中的动态 SQL 脚本路径【英文标题】:Dynamic SQL Script path in SSIS Data Flow task 【发布时间】: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 脚本任务”中。我似乎无法找到一种方法让它在数据流任务中动态化。有人可以帮忙吗?
【问题讨论】:
【参考方案1】:我认为将它们存储为 sql 文件对于任何类型的场景都没有好处。 根据您的描述,这是我会做的。
您可以将查询作为 varchar 存储在数据库的表中,而不是作为文件。然后,您可以对结果集进行 foreach 循环,并将每一行映射到变量,然后将其用作数据流中 oledb 数据源的查询。
因此,创建一个变量并为每个循环创建一个循环,该循环遍历“从 dbo.queries 中选择查询”或其他任何内容。将输出设置为您创建的变量,然后在容器中创建您的数据流,并使用表达式或“来自变量的 SQL 命令”设置源任务。
至于控制流查询,为什么不将它们作为存储过程,以便在需要时进行更改?
【讨论】:
谢谢大卫。我的目的是简化执行,所以如果我需要更改 SQL 查询,我可以只更改 SQL 脚本,而无需编辑包。你提供的工作看起来有点复杂。是否有任何简单的方法可以将 SQL 脚本从文件连接到 OLEDB 源组件,而不是将其放入变量或查询窗口中? 我可以想到很多方法来做到这一点,而 SSIS 只是开销。例如,为什么不使用 powershell 运行它们?如果你想要 SSIS,为什么不直接遍历文件并将其内容添加到 sql 命令变量中?以上是关于SSIS 数据流任务中的动态 SQL 脚本路径的主要内容,如果未能解决你的问题,请参考以下文章