【发布时间】:2019-05-29 13:42:11
【问题描述】:
我的 SSIS 项目倾向于运行在环境之间移动时需要更改的查询,例如表架构可能会更改或 Where 子句中的值。我总是将我的 SQL 放入项目参数中,因为格式丢失,因此很难编辑,或者直接将其放入执行 SQL 任务/数据流源中,然后在迁移之间手动编辑它,这也不理想。
我想知道如果我将我的 SQL 脚本添加到项目内的文件中,是否可以重新读取这些脚本?例如,如果我提出这样的查询: 从 %schema%.tablename 中选择 ID、名称 我想将其读入一个变量,然后很容易使用表达式,就像我对项目参数所做的那样,将 %schema% 替换为适当的值。然后可以轻松编辑项目中的 .sql 文件,甚至可以通过在项目进入部署流程之前禁用/删除的执行 SQL 任务进行测试。但是我一直无法找到如何使用项目中的相对路径读取文件。此外,我什至不确定这些是否已部署到 SSIS 服务器。
感谢您的任何见解。
我已将文本文件 query.sql 添加到 Visual Studio 中的 SSIS (SQL 2017) 项目中,但我发现无法将 query.sql 的内容提取到变量中。
【问题讨论】:
-
你考虑过将 ssis 包与 sql 解耦吗?您可以将 sql 移动到存储过程,然后从包中调用 sql。您甚至可以在数据库中某处的表中添加一个标志,以确定存储过程正在运行的环境。 proc 可以在存储过程中自动读取 flag 并设置变量,而无需每次手动更改它们。
标签: sql-server ssis etl ssis-2017 execute-sql-task