程序员应该使用SSIS,如果是,为什么?

Cha*_*les 93 .net c# sql-server ssis

作为.NET开发人员,出于什么原因,我应该更喜欢SSIS包而不是编写代码?我们有一吨的生产包在我目前的工作,而且他们的噩梦到两个"写"(也许是画?)和维护.每个包看起来像一碗多彩的意大利面,C#和VB.NET脚本混合在抽象分解的点.要弄清楚每个"执行SQL任务"或"Foreach循环"的作用,我必须双击该死的东西并浏览分散在多个选项卡中的文字值和表达式树.

我很开放,所以我想知道是否有其他优秀的开发人员发现SSIS比编写代码更有效率.如果您确实发现SSIS更高效,请告诉我原因.

Kev*_*ite 91

我每天都使用SSIS来维护和管理大型数据仓库和多维数据集.我已经有100%的商业智能和数据仓库两年了.在此之前,我是一名10岁的.NET应用程序开发人员.

SSIS的价值是作为工作流引擎将数据从一个点移动到另一个点,可能会有一些有限的转换和条件分支.如果您的软件包包含大量脚本,那么您的团队正在使用SSIS执行错误的任务,或者对SQL不满意或者已经加入了炒作.SSIS包非常难以调试.脚本组件是一个绝对的噩梦,应该只用于格式化,循环或作为最后的手段.

  1. 保持包简单,sql任务和数据流任务.
  2. 在SSIS之外做尽可能多的工作,最好是在SQL中
  3. 将变量保存在单个全局范围内
  4. 将SQL保存在变量或存储过程中,永远不会内联
  5. 将变量值保存在配置存储中,最好是SQL数据库

  • [quote]微软于20世纪90年代末开始在.NET Framework上进行开发,最初是以下一代Windows服务(NGWS)为名.到2000年末,.NET 1.0的第一个beta版本发布[/ quote]就是这样,他可能正在使用beta版. (7认同)
  • 如果它在2002年发布,你是如何使用.NET 10年的? (6认同)

A-K*_*A-K 51

我尝试过多次使用SSIS,并放弃了它.IMO在C#中完成我所需要的一切要容易得多.SSIS太复杂了,它有太多陷阱,而且它不值得.花更多的时间来提高C#技能比花在学习SSIS上的时间要好得多 - 你将获得更多的培训回报.

在VS解决方案中查找和维护功能也非常简单.使用VS进行单元测试很容易.我需要做的就是检查Subversion中的源代码,并验证它是如何加载的.单调测试SSIS软件包非常涉及温和.

此外,有些情况下SSIS无法在某些行中填充某些列,只是跳过它们而不会引发异常.我们花了很多时间进行故障排除并弄清楚发生了什么.用C#开发替代解决方案花了不到一个小时,两年没有任何问题.

  • 是否有ETL开发人员必须知道的所有C#/编程主题的列表?例如.LINQ,SqlDataReader,DataTable等我也觉得SSIS不适合复杂的任务.如果您有一个简单的"复制粘贴"项目/任务,那么SSIS可能是最好的工具. (2认同)

Chr*_*oph 14

在我看来 - SSIS仅用于ETL操作,并且不应包含该范围之外的逻辑.

  • ETL =提取变换加载 (8认同)
  • 这就是我的感受.在我们的例子中,我们使用SSIS来处理包含定价信息的电子邮件(或SFTP)CSV等内容.分支,嵌入式脚本等非常可怕.如果只是用SSIS移动一些数据,它可能不会那么糟糕. (3认同)
  • ETL中的T可以不涉及某些逻辑吗?只是一个想法 ... (3认同)

luk*_*uke 11

我有一个不幸的经历,我们认为SSIS是一个很好的解决方案,可以聚合和组合来自多个来源的数据.不幸的是,它起初效果很好但随后需求发生变化,我们(最终)意识到这是错误的工具.

也许我们只是错误地使用它但是如果我们改变了我们的模式我们遇到了很多困难,我们最终只是重复使用前端的ORM定义来编写C#中的自定义工具来执行此操作.因为我们已经拥有了数据模型,所以这非常简单.显然YMMV和我绝不是SSIS专家,但在这一案例中,SSIS引起了大量的重复工作和头痛,只是卷起袖子和"手动编码"它比预期的要容易.

因此,在考虑SSIS时,我会考虑很多灵活性.

  • 我有一些相同的感受.重构代码很容易......而不是使用可视DSL. (7认同)

Dav*_*veE 6

SSIS有它的位置,并且该位置不是通用编程或存储过程的替代.它来自ETL学校(Extract,Transform和Load),这就是它的强项所在.

旧名称(DTS,数据转换服务)和新名称(SSIS,Sql Server Integration Services)都清楚地表明它是一种服务(或一组服务),旨在操纵数据以将SQL Server数据库集成到更大的进程中.