sql-server - SSIS:执行 SQL 任务与数据流任务
问题描述
我是 SSIS 的新手。当所有数据库都在 SQL Server 上时,是否可以在没有数据流任务(以及因此数据流选项卡)的情况下使用 ETL 流程的“执行 SQL 任务”执行所有操作?
也就是说,可以使用“控制流选项卡”中的“执行 SQL 任务”完成所有操作(ETL)吗?
当我可以使用“执行 SQL 任务”完成所有操作时,我不明白为什么要使用“数据流任务”以及“数据流选项卡”。
解决方案
与大多数问题一样,这里的答案很明确,“视情况而定”。
如果您的所有数据都在 SQL Server 中,并且所有数据库都在同一台服务器上(并且在可预见的未来很可能会保持这种状态),那么不,您根本不需要使用数据流任务。但是,正如评论中所指出的,如果是这样的话,你也根本不需要 SSIS。在一台服务器上,您可以使用存储过程完成所有事情,并通过 SQL 代理作业进行编排。
另一方面,如果您要从多个服务器访问数据,比如源系统和仓库系统,或者生产服务器和报告环境,或者从不同的平面文件导入数据,那么 SSIS 提供了一个相当简单的移动路径从服务器 A 到服务器 B 的数据。无需担心链接服务器,并且通常比链接服务器具有更好的性能。即使设置了一个中等高级的 SSIS 包,您也可以添加参数,以便灵活地将数据库从一台服务器移动到另一台服务器,而无需更改代码。
一个成熟的 SSIS 框架(或任何 ETL 工具集,实际上)可以使您的 ETL 代码与您的服务器和数据库架构的绑定不那么紧密,并且对其中任何一个的更改都更易于执行,而不会对另一个产生负面影响。
推荐阅读
- reactjs - Reactjs 单元测试数组过滤器包括不工作
- c# - MVC Core 中的 Request.Form 与 IFormCollection
- ansible - 厨师模板中的循环和差异
- ios - 使用 Apple 无障碍标签登录
- heroku - 在我的 Heroku 应用程序中添加 www 前缀不起作用
- java - 我们可以在一个 JOB 中同时添加 Tasklet 和 Chunks 吗?
- r - 使用 ggplot2 覆盖具有不同行的两个直方图
- javascript - 如何执行使用页面对象的Javascript函数
- crystal-reports - Crystal Reports 导出到 .csv 逗号分隔字符串,插入空白列
- java - onActivityResult 的行为不符合预期