一旦构建,很快就发现它依赖于它创建的sql Server和Visual Studio的版本,并且对生产环境的依赖性很小(这不是SSIS问题,只是描述了自然界我们的设置).
建立这个需要花费数天时间才能完成,然后不会在我们的QA环境下运行.
在询问该团队的SQL查询后,他们的程序包正在运行(它在生产环境中正常工作),我写了一个python脚本,执行相同的任务,没有任何依赖.我花了两个多小时(注意我已经有一个自定义库来处理我们的数据库交互),我能够写出一个我需要的UTF-16LE文件.
现在,我们的生产数据库程序员不是SSIS专家,但他们在工作流程中使用了相当多的一点 – 我很乐意称他们所有人都胜任他们的职位.
因此,我的问题 – 考虑到它似乎采取的时间以及对sql Server和Visual Studio版本的依赖性,SSIS包带来了哪些优势或好处,我可能看不到我的python代码?或者是一个shell脚本,或Ruby或代码风格的时刻?
解决方法
这是我的两分钱.请带上一粒盐.
>从平均开发人员的角度来看,一旦理解了如何处理它的细微差别,SSIS就很容易使用.我相信任何其他技术都是如此. SSIS包是可视化工作流而不是编码工具(当然,SSIS也具有出色的编码能力).通过查看工作流程而不是通过数百行代码,人们可以很容易地理解包中的内容.
> SSIS主要用于执行ETL(提取,转换,加载)作业.它很好地处理了这个功能,尤其是sql Server,更不用说它可以处理平面文件,DB2,Oracle和其他数据源.
>您可以使用最少的编码或不编码来执行大多数任务.它可以在几分钟内从一个数据源加载数百万行. See this example演示了一个包,它在3分钟内从制表符分隔文件加载了100万行到sql Server.
>记录功能,以捕获程序包及其任务执行的每个操作.它有助于查明错误或跟踪有关包执行的操作的信息.这不需要编码. See this example用于记录.
> Check Points有助于像记录器一样捕获程序包执行,并帮助从故障点重新启动程序包执行,而不是从头开始运行程序包.
>表达式可用于根据给定条件确定包装流量.
>可以使用基于数据库或XML的dtsconfig文件或基于机器的环境变量为不同的环境设置包配置. See this example用于基于环境变量的配置.点#4 – #7是开箱即用的功能,需要较小的配置,根本不需要编码.
> SSIS可以利用.NET框架功能,如果开发人员找不到满足其要求的组件,他们也可以创建自己的自定义组件. See this example了解.NET编码如何最好地与不同的数据源一起使用.这个例子是在不到3个小时内创建的.
> SSIS可以使用相同的数据源进行多次转换,而无需重新读取数据. See this example了解多播意味着什么.这是an example如何处理XML数据源.
> SSIS还可以轻松地与SSRS(Reporting Services)和SSAS(Analysis Services)集成.
我刚刚列出了我在SSIS中使用的非常基本的东西,但有许多不错的功能.正如我之前提到的,我不确定Python,Ruby或其他语言是否可以轻松地处理这些任务.
这一切都归结为技术的舒适感.当技术是新的时,人们非常怀疑并且不愿意适应它.
根据我的经验,一旦你理解并拥抱SSIS,它真的是一个很好的技术.它适用于sql Server.我并不否认我在开发包装时遇到障碍这一事实,但大多数人都找到了克服它们的方法.
这可能不是你期待的答案,但我希望这能给出一个想法.