VS 中的 SSDT 与 SQL Server 中的 Integration Services 的区别

GGG*_*GGG 6 sql-server ssis etl visual-studio sql-server-data-tools

我想知道 Visual Studio 中的 SSDT 和 SQL Server 中的集成服务之间的区别。在 VS 中使用 SSDT 在本地开发 SSIS 包时,我可以将数据传递到本地 SQL Server,而无需在 SQL Server 实例中安装 Integration Services。我想知道是否需要集成服务来允许服务器之间的通信。假设 SQL Server DB 在一台服务器上,而 .dtsx 包在另一台服务器上。

J W*_*ezy 9

这就是微软营销部门的疯狂之处。重要的是要了解 Microsoft 不是编写代码的公司。微软是一家恰好编写代码的营销公司。

简单的答案是 SSDT 是旨在成为商业智能的项目模板包。

SSDT 包含三种模板类型:

  1. SSIS:集成服务
  2. SSRS:报告服务
  3. SSAS:分析服务

更新

我没有回答运行包的问题。基本上,您可以在 Visual Studio 中针对 SQL Server 运行任何 SSDT 包。但是,如果要将 SSDT 包部署到 SQL Server,则必须安装这些服务。可以通过 SQL Server 实例安装向导安装这些服务。您需要注意另一个被称为 SQL Server 版本定位的毛茸茸的概念:单击此处

例如,如果要将 SSIS 包部署和运行到 SQL Server,则需要安装 Integration Services(这将包括 DTExec.exe 和 ISDeploymentWizard.exe)。现在,您还需要将 SSISDB 安装到 SQL Server,以便能够将 SSIS 包部署到 SQL Server - 这是通过 SQL Server Management Studio (SSMS) 执行的。实际的包部署到一个名为Integration Services Catalog的文件夹中,并从该文件夹中进行管理。然后可以自动安排包通过 SQL Server 代理运行。您极不可能直接使用 SSIDB,除了可能会查询它的信息:请参阅此处。

请参阅 Microsoft 的说明:单击此处

SSRS 包通过单独的 Web-UI 进行管理,我没有处理过 SSAS 包。这不是很好玩吗!?

关于 DTExec.exe 的说明

我遇到过鄙视 SSIS 的纯粹主义者,主要是因为他们不了解它。我得到的一般论点是它比 PowerShell 或存储过程慢。这可能会导致某人的头部爆炸。

基本上,PowerShell 通过 .NET Framework 运行,该框架使用 C# 编写,并且必须运行 OS 中的几个层才能执行。SSIS 组件是用 C# 编写的,而 DTExec.exe 应用程序是用 C++ 编写的,它可以直接访问系统资源(C# 不能这样做,因为它是托管代码!)。因此,SSIS 将在大型任务中击败 PowerShell 和存储过程。

存储过程是一种不同的动物,但仍然较慢,因为它们缺少管道缓冲区(即数据流选项卡)。另一个主要限制是 SQL Server 执行存储过程的方式和顺序。因此,让我们想象一个可比较的 SSIS 作业被分解为多个存储过程,并且这些过程由一个主存储过程调用 - 可以说是一个超级存储过程。SQL Server 将按顺序执行存储过程,一次一个——这是一个巨大的性能瓶颈。SSIS 的管道缓冲区通过在每个任务中处理默认的 10,000 行(顺便说一句,这是可配置的)然后将它们传递给下一个任务来消除这一点。因此,我们可以将数据流任务视为它们自己的存储过程。

附加上下文

由于 SSIS 与Visual Studio 相关,不一定与 SQL Server相关,因此长期以来一直混淆 SSIS 的构成。

  • 2005 年之前:它是数据转换服务 ( DTS )
  • 2005 年和 2008 年:在 2005 年,DTS 进行了大幅改革,并在开发后期更名为 SSIS。这就是为什么 SSIS 中的所有内容仍然引用 DTS(即 *.dtsx 文件)的原因。直到今天,情况仍然如此。奇怪的是,只有受虐狂才喜欢 DTS。但!模板包更名为 Business Intelligence Development Studio ( BIDS )
  • 2012 年和 2013 年:更名为SSDT-BI。显然,已经有另一个名为 SSDT 的产品
  • 2015 年及以后:现在命名为SSDT

请参阅 Microsoft 对 SSDT 的解释尝试:单击此处

在 Visual Studio 2017 (VS 2017) 中,SSDT 及其各种化身在很大程度上被视为 Visual Studio 的白痴继子。我这样说是因为 VS 仅作为这些项目类型的独立产品安装。我不知道为什么这样做 - 我最好的猜测是因为 SSDT 是免费的。无论如何,如果您想使用 Visual Studio 进行其他应用程序开发,那么您必须安装一个单独的 Visual Studio 实例。所以,我们的开发人员实际上在我们的开发箱上有两个独立的安装,我们必须使用特定的安装来进行我们正在做的事情(即,SSDT 或非 SSDT 开发)。

现在,在 VS 2019 中,微软正在废除这种模式,并最终将 SSDT 包集成到产品中。不过,针对 SSDT 的 VS 2019 的最初推出是一出开箱即用的错误喜剧。单击此处查看我的解释。基本上,SSIS 不随包一起安装,必须单独添加。尽管如此,您仍然拥有 VS 2019 的一个实例。此外,SQL11 数据提供程序已被弃用。而且,这显然也没有随安装包一起提供,需要单独安装。因此,任何使用它的现有软件包都需要升级和重新部署(请参阅已知问题 #1)。

我暂时推迟升级到 VS 2019。VS 2017 至少可以说是一个痛苦的过程。我个人仍然使用 VS 2013 Update 5。所有 VS 实例都针对 SQL Server 2014。