如何将这 3 个 SQL 作业合并到一个 SSIS 包中?

How do I combine these 3 SQL jobs into a single SSIS package?

我正在使用 SQL Server 2012。我目前在我的数据库中有 3 个作业 运行 使用 T-SQL 查询。我想将所有这 3 个 SQL 作业分组到一个 SSIS 包中,每个作业在 SSIS 包中分配一个特定步骤。

我将使用 SSDT 创建此程序包。我的 3 个工作的 T-SQL 查询如下:

作业 1:

SELECT 
*
INTO dbo.table1
FROM 
   OPENDATASOURCE
   (
      'SQLOLEDB', 
      'Data Source=SourceServer;User ID=MyUser;Password=MyPass'
   ).SourceDatabase.dbo.SourceTable;

作业 2 和作业 3 与上面相同,只是要导入 table 个名称。

我是否需要为每个作业准备 3 个单独的 SSIS 包,然后将这 3 个 SSIS 包合并为一个最终的 SSIS 包?还有,我应该用哪个任务来实现这个?

您不必将您的工作分成单独的包,这对您的情况没有好处。出于维护原因,我会使用单个包。
只需将您的 T-SQL 命令文本放入 Execute SQL Task - here 是 Microsoft Docs 描述

SSIS 可以提供异常处理。比如说,如果 第 2 步 失败,那么 第 1 步 更改应该回滚。这可以通过将所有三个步骤按顺序排列并将其 TransactionSupport 属性 设置为 Required 来实现。这只是一个例子。

您可以像这样将所有这些都放在一个包中:

我只有一张便条 - 如果 Job 2 任务失败怎么办?整个事务应该回滚吗?如果是这样 - 您应该考虑使用 DataFlow task preceded by BEGIN TRANSACTION and followed by COMMIT TRANSACTION as described in this 文章。您还可以使用 Failure 任务来报告可能出现的问题。

此外,还有一件事 - 您在这里不需要 SSIS 包。创建一个 stored procedure 并像您现在所做的那样从一个简单的 T-SQL Job 调用这个过程怎么样?您可以在一个地方处理交易事宜。只是一个想法。