WEB开发网
开发学院数据库MSSQL Server 怎样执行SQL Server集成服务(SSIS)中的批处理 阅读

怎样执行SQL Server集成服务(SSIS)中的批处理

 2008-10-08 10:08:20 来源:WEB开发网   
核心提示: 注意,这个存储过程只获取Processed字段等于0的记录,怎样执行SQL Server集成服务(SSIS)中的批处理(5),Execute SQL任务的一般属性设置如下所示:Execute SQL任务的参数匹配属性设置如下所示:在上面的设置中,设置了SQLStatement来执行这个存储

注意,这个存储过程只获取Processed字段等于0的记录。

Execute SQL任务的一般属性设置如下所示:

怎样执行SQL Server集成服务(SSIS)中的批处理

Execute SQL任务的参数匹配属性设置如下所示:

怎样执行SQL Server集成服务(SSIS)中的批处理

在上面的设置中,设置了SQLStatement来执行这个存储过程,对所要求的参数使用占位符。SSIS包变量按照这个存储过程中参数的序列号匹配到这些参数。

Compute Aggregation(计算聚合)

Compute Aggregation是一个Execute SQL任务,它重新计算销售历史概要表中的概要数据用于要进行的订单年和订单月份批处理。销售历史概要表和存储过程如下所示:

  CREATETABLEdbo.SalesHistorySummary(
  OrderYearintnotnull,
  OrderMonthintnotnull,
  ProductIDintnotnull,
  OrderQtysmallintnotnull,
  LineTotalmoneynotnull
  )
  CREATEPROCEDUREdbo.stp_CalcSalesHistorySummary
  @OrderYearint
  ,@OrderMonthint
  AS
  BEGIN
  SETNOCOUNTON;
  DELETEFROMdbo.SalesHistorySummary
  WHEREOrderYear=@OrderYear
  ANDOrderMonth=@OrderMonth;
  INSERTINTOdbo.SalesHistorySummary(
  OrderYear
  ,OrderMonth
  ,ProductID
  ,OrderQty
  ,LineTotal
  )
  SELECT
  OrderYear
  ,OrderMonth
  ,ProductID
  ,SUM(OrderQty)
  ,SUM(LineTotal)
  FROMdbo.SalesHistory
  WHEREOrderYear=@OrderYear
  ANDOrderMonth=@OrderMonth
  GROUPBY
  OrderYear
  ,OrderMonth
  ,ProductID
  END
  GO

上面的存储过程首先删除概要表中要被处理的订单年和月份的所有记录,然后执行聚合和插入。Execute SQL任务属性设置和Append Batch to Sales History中的一样,除了要执行的存储过程的名称;我们跳过显示这个截屏。

Mark Batch as Processed(将批处理标记为处理过的)

Mark Batch as Processed是一个Execute SQL任务,它更新源表中在当前批处理中处理过的记录的Processed字段。它调用下面的存储过程:

  CREATEPROCEDUREdbo.stp_MarkOrdersProcessed
  @OrderYearint
  ,@OrderMonthint
  AS
  BEGIN
  SETNOCOUNTON;
  UPDATEdbo.imp_SalesOrderHeader
  SETProcessed=1
  WHEREDATEPART(YYYY,OrderDate)=@OrderYear
  ANDDATEPART(MONTH,OrderDate)=@OrderMonth;
  END
  GO

Execute SQL任务属性设置也和之前的一样,除了存储过程的名称;我们跳过显示这个截屏。

总结

现在,我们强调一下执行批处理的示例SSIS包中的重点:

将源数据分组到批处理中;使用Execute SQL任务并创建一个完全结果集,它在一个包变量中保存这个结果集。

使用一个Foreach Loop容器迭代结果集。

使用一个序列容器来定义一个事务并在序列容器中添加合适的任务。

这个包设置支持在开始时发生任何错误时重启这个包;序列容器在成功后提交所有工作,如果发生任何错误就回滚。源数据处理过后会进行标记,所以如果这个包重启,这个数据也不会再次处理。

上一页  1 2 3 4 5 

Tags:怎样 执行 SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接