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

时间:2018-01-18 06:37:58

标签: sql-server ssis sql-server-2012 sql-server-data-tools ssis-2012

我正在使用SQL Server 2012。我目前使用T-SQL查询在我的数据库上运行了3个作业。我想将所有这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与上面相同。

我是否需要为每个作业分配3个独立的SSIS包,然后将这3个SSIS包合并为一个最终的SSIS包?另外,我应该用哪个任务来实现这个目标?

2 个答案:

答案 0 :(得分:1)

您不必将作业拆分为单独的包,在您的情况下不会有益。从维护原因我会使用单一包装 只需将您的T-SQL命令文本放在执行SQL任务 - here是Microsoft Docs说明

SSIS可以提供​​异常处理。比如说,如果第2步失败,则应回滚第1步更改。如果您将所有三个步骤放在一个序列中并将其 TransactionSupport 属性设置为必需,则可以实现此目的。这只是一个例子。

答案 1 :(得分:1)

您可以将所有这些内容放在一个包中:

enter image description here

我只有一个注释 - 如果Job 2任务会失败怎么办?整个交易应该回滚吗?如果是这样的话 - 您应该考虑使用BEGIN TRANSACTION前面的DataFlow任务,然后按照this文章中的说明使用COMMIT TRANSACTION。您还可以使用Failure任务报告可能的问题。

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