【问题标题】:Why would I use an SSIS package in SQL Server 2008 as opposed to some other technology?为什么我要在 SQL Server 2008 中使用 SSIS 包而不是其他一些技术?
【发布时间】:2011-09-11 03:20:22
【问题描述】:

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

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

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

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

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

因此,我的问题是——考虑到它所花费的时间以及对 SQL Server 和 Visual Studio 版本的依赖关系,SSIS 包带来了哪些我可能在我的 python 代码中看不到的优势或好处?或者是一个 shell 脚本,或者 Ruby 或者 code-flavor-of-the-moment?

【问题讨论】:

  • 一个开发人员可能想使用 Python,另一个 Ruby,第三个 Perl - 这比让所有开发人员都使用 SSIS 更好吗?转换大量数据)和 b)SQL Server 的一部分,并且不需要额外的依赖项(如 Python 解释器/运行时等)?
  • 这是我的问题 - 是什么让 SSIS 比你最喜欢的语言更有吸引力?
  • 大部分情况下:(1) 它已经是 SQL Server 的一部分 - 无需额外安装(无需 Python 解释器或运行时),并且 (2) 它针对 ETL 流程进行了调整和工具化 - 具有您需要的任务和组件'必须潜在地为有关加载和转换数据的所有事情编写大量 Python 代码

标签: tsql ssis meta


【解决方案1】:

无论如何,我都不是 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. Package configurations 可以使用数据库或基于 XML 的 dtsconfig 文件或基于机器的环境变量来设置不同的环境。 See this example 用于基于环境变量的配置。第 4 点 - 第 7 点是开箱即用的功能,需要少量配置并且根本不需要编码。

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

  9. SSIS 可以将同一数据源用于多个转换,而无需重新读取数据。 See this example 了解多播的含义。这是an example 如何处理 XML 数据源。

  10. SSIS 还可以轻松与 SSRS(报告服务)和 SSAS(分析服务)集成。

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

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

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

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

【讨论】:

  • 谢谢!这正是我正在寻找的答案类型。我与 SSIS 几乎没有联系,我想知道它是否是满足我们需求的合适解决方案,或者只是我们生产数据库程序员的首选锤子。
  • 很好的答案。我要补充的是,当一个简单的 SQL 查询和工作就可以完成时,许多开发人员都会使用 SSIS。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-03
  • 1970-01-01
  • 2015-10-03
  • 2019-07-16
  • 2016-07-27
  • 1970-01-01
相关资源
最近更新 更多