我遇到过一个相当复杂的系统,其中业务逻辑是用SSIS编写的。由于SSIS无法执行此逻辑的大部分,因此它严重依赖C# 脚本任务来执行操作。
举一个需要C# 脚本任务的例子,应用程序需要对第三方应用程序进行 API 调用以获取数据,还需要第三方库来对数据执行一些计算。
调用C# 脚本任务使开发和调试变得更加困难……但同时,SSIS允许程序员使用C# 脚本任务。
SSIS有哪些应用?
使用SSIS + C# 脚本任务实现复杂逻辑有什么好处吗?如果我们需要使用C# 脚本,那么为什么不将整个逻辑用C#编写呢?
要直接回答你的问题,如果你知道 T-SQL 和 c# SSIS 几乎可以做你需要的任何事情。然而,我个人对它作为平台的不满源于这样一个事实,即它倾向于按程序处理数据,而不是作为一个集合。这一点很重要,因为它是 RDMS 的闪光点,所以您正在切断您最好的资源之一。从我的角度来看,尽管它具有强大的功能,但它更像是一个为那些不习惯编程的人准备的平台。
为了不那么直接地回答你的问题,我在 12 个月前发现自己处于非常相似的情况。我发现从问自己这两个问题开始很有用:
在回答了这些问题之后,我选择使用那些能够发挥我的技能的工具来构建我的解决方案。
就我而言,答案是 T-SQL 和 SSMS。因此,我选择完全删除对 SSIS 的依赖,并采用自定义 T-SQL/Agent 路由。最后,我对这个决定感到非常高兴。维护和调试解决方案是一项简单的任务,因为我非常熟悉语言和环境。
这是主观的。每个答案都只是某人的意见,但是,好吧,这是我的答案。
我仅将 SSIS 用于 ETL。SSIS 脚本太难用了。
虽然某些逻辑在 C# 中需要 5 分钟才能实现,但使用 SSIS 可能需要几天时间。最重要的是,如果逻辑需要循环或必须在每一行上执行,那么使用 C# 会快得多。
数据库适合基于集合的操作,但不适合循环或单行处理。
如果我要过度简化事情,请不要做任何需要在 SSIS 中声明变量的事情。但正如我所说,这样的事情是主观的。
使用 C# 的代价是您需要维护额外的代码。
社区维基答案:
随心所欲,满足业务需求,并且您的团队能够维护和支持。
不同的解决方案和技术总是有优点和缺点,有些人可能认为它更复杂,而其他人可能认为它更容易,因为这是他们习惯的,等等。如果可以,请使用工具箱中的所有工具,并且不要陷入只使用具有许多工具的工具箱中的一种工具的思维模式,否则您可能永远不知道自己缺少什么。
许多大型环境使用 SSIS 和 C# 逻辑,以及大量的存储过程、许多 SQL 代理作业和 Powershell。也可能有自定义应用程序也做各种事情,有许多 SQL Server 实例。
这都是非常主观的。如果你有一组 C# 向导并且没有人精通 SSIS,那么 SSIS 中的复杂业务逻辑将是痛苦的。如果您是一个高度数据驱动的商店,并且您的业务逻辑包含多个数据源,那么您可能会受益于在 SSIS 中放置更多数据。