首页 > 解决方案 > VS 中的 SSDT 和 SQL Server 中的集成服务之间的区别

问题描述

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

标签: sql-servervisual-studiossisetlsql-server-data-tools

解决方案


这就是微软营销部门失控的地方。重要的是要了解 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# 中并且必须通过操作系统中的几个层才能执行。虽然 SSIS 组件是用 C# 编写的,但 DTExec.exe 应用程序是用 C++ 编写的,它可以直接访问系统资源(C# 不能这样做,因为它是托管代码!)。因此,SSIS 将在大型任务中击败 PowerShell 和存储过程。

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

附加上下文

由于 SSIS 与Visual Studio相关,而不一定是 SQL Server,因此长期以来一直存在混淆。

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

查看微软对 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。


推荐阅读