Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql 为什么我要在SQLServer2008中使用SSIS包而不是其他技术?_Tsql_Ssis_Meta - Fatal编程技术网

Tsql 为什么我要在SQLServer2008中使用SSIS包而不是其他技术?

Tsql 为什么我要在SQLServer2008中使用SSIS包而不是其他技术?,tsql,ssis,meta,Tsql,Ssis,Meta,我在一个内部开发小组的QA部门工作。我们的生产数据库程序员一直在构建一个SSIS包,从各种数据库位创建一个加载文件,以便导入到第三方应用程序中(我们正在测试与此的集成) 构建之后,人们很快发现它依赖于创建它时使用的SQL Server和Visual Studio版本,并且对生产环境的依赖性也很少(这不是SSIS问题,只是描述了设置的性质) 构建这个需要几天的努力,然后在我们的QA环境下无法运行 在向该团队询问他们的包正在运行的SQL查询(在生产环境中工作正常)之后,我编写了一个python脚本,

我在一个内部开发小组的QA部门工作。我们的生产数据库程序员一直在构建一个SSIS包,从各种数据库位创建一个加载文件,以便导入到第三方应用程序中(我们正在测试与此的集成)

构建之后,人们很快发现它依赖于创建它时使用的SQL Server和Visual Studio版本,并且对生产环境的依赖性也很少(这不是SSIS问题,只是描述了设置的性质)

构建这个需要几天的努力,然后在我们的QA环境下无法运行

在向该团队询问他们的包正在运行的SQL查询(在生产环境中工作正常)之后,我编写了一个python脚本,该脚本在没有任何依赖项的情况下执行相同的任务。我花了两个多小时(注意,我已经有一个自定义库来处理我们的数据库交互),并且我能够写出我需要的UTF-16LE文件

现在,我们的生产数据库程序员不是SSIS专家,但他们在工作流程中使用了相当多的SSIS——我很乐意称他们所有人都能胜任他们的工作


因此,我的问题是——考虑到它所花费的时间以及对SQL Server和Visual Studio版本的依赖性,SSIS包带来了哪些我在python代码中可能看不到的优势或好处?或者是shell脚本,或者是Ruby,或者是目前流行的代码风格?

我不是SSIS方面的专家,而是一个拥有三年多SSIS工作经验的普通开发人员。与任何其他软件一样,SSIS也有不足之处,但到目前为止,我很喜欢使用SSIS。技术的选择取决于一个人的需求和偏好。我不会说SSIS优于其他技术。此外,我还没有使用Python、Ruby或您提到的其他技术

这是我的两分钱。请把这个和盐放在一起

  • 从一般开发人员的角度来看,一旦您了解了如何处理SSI的细微差别,SSI就很容易使用。我相信其他技术也是如此。SSIS包是可视化的工作流程,而不是编码工具(当然,SSIS也具有出色的编码功能)。通过查看工作流,而不是浏览数百行代码,可以很容易地理解包中发生了什么

  • SSI主要用于执行ETL(提取、转换、加载)作业。它经过了微调,可以很好地处理该功能,特别是使用SQL Server,更不用说它还可以处理平面文件、DB2、Oracle和其他数据源

  • 您可以使用最少或不使用编码来执行大多数任务。它可以在几分钟内将数百万行从一个数据源加载到另一个数据源。演示一个在3分钟内将一百万行从制表符分隔的文件加载到SQL Server的包

  • 日志记录
    捕获包及其任务执行的每个操作的功能。它有助于查明错误或跟踪有关包执行的操作的信息。这不需要编码。用于日志记录

  • 检查点
    有助于像记录器一样捕获包执行,并有助于从故障点重新启动包执行,而不是从一开始就运行包

  • 表达式
    可用于根据给定条件确定包装流程

  • 可以使用数据库或基于XML的
    dtsconfig
    文件或基于机器的环境变量为不同的环境设置包配置。用于基于环境变量的配置。第4点至第7点是开箱即用的功能,需要少量配置,根本不需要编码

  • SSI可以利用.NET framework功能,如果开发人员找不到满足其需求的组件,他们也可以创建自己的自定义组件。了解.NET编码如何最好地与不同的数据源一起使用。此示例创建时间不到
    3小时

  • SSI可以使用同一数据源进行多次转换,而无需重新读取数据。了解多播的含义。下面介绍如何处理XML数据源

  • SSI还可以轻松地与SSR(报告服务)和SSA(分析服务)集成

  • 我刚刚列出了我在SSIS中使用过的非常基本的东西,但是有很多很好的特性。正如我前面提到的,我不确定Python、Ruby或其他语言是否能够如此轻松地处理这些任务

    这一切归结为人们对这项技术的满意程度。当这项技术是新技术时,人们非常怀疑,也不愿意去适应它

    根据我的经验,一旦您理解并接受SSIS,它确实是一种很好的技术。它与SQL Server配合得非常好。我不否认我在开发我的软件包的过程中遇到了障碍,但主要是找到了克服这些障碍的方法


    这可能不是您所期望的答案,但我希望这能提供一个想法。

    一个开发人员可能想使用Python,另一个Ruby,第三个Perl——这比让所有开发人员都使用SSI更好吗?SSI是专为这类工作设计的(ETL——加载、大量转换数据)和b)是SQL Server的一部分,不需要额外的依赖项(如Python解释器/运行时等)?这是我的问题-是什么让SSI对您喜爱的语言具有吸引力?主要是:(1)它已经是SQL Server的一部分-不需要额外的安装(没有Python解释器或运行时),以及(2)它是