在 SSIS 中,我们可以使用 OLE DB Source SQL 命令在数据库上运行 T-SQL 脚本,然后将输出用作源。例如,复杂的查询可以包装在 OLD DB 源 SQL 命令中,输出可以直接写入文件或目标表。这样,我们就不必设计数据流来进行合并连接、查找等。
我想知道这种方法与在 SSIS 设计工具中定义 sql 查询(使用工具箱中的可用对象)相比是否有任何缺点。看起来,完成工作所需的时间更少,运行速度可能更快。
如果您分享您对这种方法的优缺点的想法,我们将不胜感激。
谢谢。
在 SSIS 中,我们可以使用 OLE DB Source SQL 命令在数据库上运行 T-SQL 脚本,然后将输出用作源。例如,复杂的查询可以包装在 OLD DB 源 SQL 命令中,输出可以直接写入文件或目标表。这样,我们就不必设计数据流来进行合并连接、查找等。
我想知道这种方法与在 SSIS 设计工具中定义 sql 查询(使用工具箱中的可用对象)相比是否有任何缺点。看起来,完成工作所需的时间更少,运行速度可能更快。
如果您分享您对这种方法的优缺点的想法,我们将不胜感激。
谢谢。
除了能够可视化查询背后的逻辑之外,我很难想到将它放在 SSIS 中的任何优势。这是我希望开发人员能够通过查看查询而不是设计界面来完成的事情。
这样做的主要缺点是您通过自己指定物理操作来有效地覆盖/绕过查询优化器。如果基数估计在幕后发生变化,则 SSIS 设计表面中存在的物理操作可能不再是查询服务的最佳选择。
如果通过正常管道一次性处理所有查询:
如果数据来自多个不同的来源(SSIS 的真正力量!),或者如果您可以证明这样做的性能会更好(受警告),我真的只鼓励使用 SSIS 运算符进行连接以上)。
即便如此,我仍然会尝试将尽可能多的事情分组为单个查询(即,一个销售数据查询,一个库存查询,等等)。根据您的环境,您需要的所有业务和查询逻辑都可以放在源数据库的存储过程、视图等中;这极大地简化了最终出现在 SSIS 中的 SQL 代码量,如果可以的话,我强烈建议您这样做。