为什么我会在SQL Server 2008中使用SSIS包而不是其他技术?

时间:2011-06-08 18:49:19

标签: tsql ssis meta

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

一旦构建,很快发现它依赖于它创建的SQL Server和Visual Studio的版本,并且对生产环境的依赖性很小(这不是SSIS问题,只是描述我们设置的性质。)

获得此构建需要花费数天的时间,然后才能在我们的QA环境下运行。

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

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

因此,我的问题 - 考虑到它似乎采取的时间以及对SQL Server和Visual Studio版本的依赖性,SSIS包带来了哪些优势或好处,我可能看不到我的python代码?或者是一个shell脚本,或Ruby或代码风格的那一刻?

1 个答案:

答案 0 :(得分:11)

我不是SSIS的专家,而是一位在SSIS工作三年多的经验的普通开发人员。像任何其他软件一样,SSIS也有缺点,但到目前为止,我很高兴与SSIS合作。技术的选择取决于一个人的要求和偏好。我不是说SSIS优于其他技术。此外,我还没有使用Python,Ruby或您提到的其他技术。

这是我的两分钱。请带上一粒盐。

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

  2. SSIS主要用于执行ETL(提取,转换,加载)作业。它很好地处理了这个功能,尤其是SQL Server,更不用说它可以处理平面文件,DB2,Oracle和其他数据源。

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

  4. Logging能够捕获程序包及其任务执行的每个操作。它有助于查明错误或跟踪有关包执行的操作的信息。这不需要编码。 See this example用于记录。

  5. Check Points有助于像记录器一样捕获包执行,并帮助从故障点重新启动包执行,而不是从头开始运行包。

  6. Expressions可用于根据给定条件确定包流。

  7. 可以使用基于数据库或基于XML的Package configurations文件或基于机器的环境变量为不同的环境设置
  8. dtsconfigSee this example用于基于环境变量的配置。第4点 - 第7点是开箱即用的功能,需要进行小配置,根本不需要编码。

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

  10. SSIS可以使用相同的数据源进行多次转换,而无需重新读取数据。 See this example了解多播意味着什么。以下是an example如何处理XML数据源。

  11. SSIS还可以轻松地与 SSRS (Reporting Services)和 SSAS (Analysis Services)集成。

  12. 我刚刚列出了我在SSIS中使用的非常基本的东西,但是有许多不错的功能。正如我之前提到的,我不确定Python,Ruby或其他语言是否可以轻松地处理这些任务。

    这一切归结为对技术的一种安慰。当技术是新技术时,人们非常怀疑并且不愿意适应它。

    根据我的经验,一旦你理解并拥抱SSIS,它真的是一个很好的技术。它适用于SQL Server。我并不否认我在开发包装时遇到了障碍,但大多数人都找到了克服它们的方法。

    这可能不是你期望的答案,但我希望这能给出一个想法。