一步一步学SQL Server BI 7:事务,错误输出,事件处理,日志记录

  和其它程序一样,SSIS包同样需要健壮,稳定的运行,这样的程序才有可靠性和可伸缩性。SSIS提供了如下方面的支持:

  1.事务: 可以对一个程序包设置成一个或者多个事务,甚至可以对两个程序包设置成一个事务。为了保证数据的一致性,你还可以DTC事务或者SQL Server引擎级的事务。
  2.检查点: 用来记录一个程序包出错时任务的运行情况,以便程序包再次启动时,直接从发生错误的任务直接执行.
  3.错误输出:即使再完美的程序也会有错误,尤其对于数据流中的任务来说,及有可能由于格式,类型等问题,导致这一行的发生错误。SSIS允许针对这样的每行进行错误输出处理,你可 以进行修复或者记录,当然你也可以忽略。&">nbsp;
  4.优先约束:在控制流中,你不仅可以使用一个任务的成功,失败或执行结束作为条件来执行下面的任务,甚至可以使用表达式来做为条件。
  5.事件处理: 在SSIS包中,事件处理是和控制流,数据流相并列的。在这里,你可以对程序包,任务或者容器的不同的事件进行处理,事件还可以用于设置断点并控制日志记录。我们可以使用OnError事件来捕获错误.
  6.日志记录: 可以在运行时,记录指定的事件信息,可以保存在本地文本或者XML文件中,也可以保存到数据库中,或者是Windows EventLog,Profiler文件中,甚至你可以扩展自己的日志记录。

  需求:
  为了和其它系统集成,AdventureWorks系统的产品价格8206.html">实时更新,需要从一个指定的URL下载一个压缩文件,解压后,对这个数据文件进行分析导入。由于下载的文件是由一个非程序维护的文件,由于人为因素,里面的数据格式有可能有错误,但是要求忽略这样的数据。另外,如果处理失败,需要对保留历史文件。如果发生错误,需要发送错误Email.同时需要保留程序日志,以便查找错误原因。

  实现:
  1. 在你的D盘下面新建一个ProductPrice文件夹来存放压缩和数据文件,在下面新建一个bak目录存储备份文件。
  2. 创建一个SSIS包,同时新建以下变量:

变更名类型值说明filePathStringD:\ProductPrice\数据根目录dataPathStringD:\ProductPrice\ProductList.txt解压后数据文件backPathString

@[User::filePath]  +   "bak\\"  + (DT_WSTR, 4) YEAR( GETDATE() ) + "-" + (DT_WSTR, 2) MONTH( GETDATE() ) + "-" +  (DT_WSTR, 2) DAY( GETDATE() )   + ".zip"

需要将EvaluateAsExpression设置为True

主要用于存储未执行成功的压缩数据文件,其名称为当前日期(由表达式计算出当前日期)

比如:D:\ProductPrice\bak\2009-9-20.zipWinRarStringC:\Program Files\WinRAR\WinRAR.exeWINRAR的安装目录zipPathStringD:\ProductPrice\Price.zipzip压缩文件下载路径erroCountInt320数据文件解析出错的行数

  3.新建一个OLE DB连接,连接我们的AdventureWorks数据库.
  4.新建一个Http连接,URL填写我们的远程的压缩文件的位置(当然,这里也可以使用变量).

  当然,实际中这里可能需要使用凭据或者证书。

时间: 2024-10-25 20:15:18

一步一步学SQL Server BI 7:事务,错误输出,事件处理,日志记录的相关文章

一步一步学SQL Server BI 1:基础知识

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; SQL Server 2005 和2008提供了很多新的和增强的商务智能功能,包括利用集成服务(SSIS)整合多种数据源;利用分析服务(SSAS)使数据内容更丰富并且建立复杂的商业分析; 以及利用报表服务(SSRS)编辑,管理,和提交丰富的报表. 如果你现在还不清楚这些功能,那么接下来一系列的介绍会让你对SQL Server现在的商务智能支持大吃一惊.不过现在关于S

一步一步学SQL Server BI 4:合并数据2

上次我们并没有实现http://www.aliyun.com/zixun/aggregation/16544.html">Excel中的数据与数据库中的数据进行整合,存在即更新,不存在即插入.这次主要介绍几种方法来实现: 1.使用Lookup 2.使用execute SQL task调用存储过程 3.使用script component脚本实现 4.使用MERGE 语句(SQL SERVER 2008) 5.使用上次我们用到的Merge来实现 6.使用第三方组件SCD Component

一步一步学SQL Server BI 2:SSIS进行简单的数据导入导出

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 让我们首先开始学习SSIS吧,利用SSIS把SQL Server中的数据导出.首先,打开Vs.net 2005,选择商业智能项目,然后选择模板中的Integration Service项目,输入项目名称: 创建好后,我们就在默认的Package包中进行设计(关于一些概念性的就不介绍了,请参照这个文章, 或者是其它的教程或者书籍).首先向控制流中添加一个数据流组件(D

一步一步学SQL Server BI 5:通过Email发送查询结果

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 忙了一段,终于有时间来完成这一系列了.sql server 2008正式版已经发布了,接下来的系列都将基于sql server 2008+vs.net 2008开发. 在一个B2B项目中遇到这样的一个情况,每天老板都想看到所有的新的订单信息,而这个老板很懒,不想登录系统后台,而是想通过查看邮件的方式.当然实现方式很多,这里我们介绍一个怎么使用SSIS包来实现这样的一

windows server 2003 中 SQL Server 2000 分布式事务 错误解决方法

server|window|错误|分布式|解决 症状如果在 Windows .NET Server 上安装的 SQL Server 2000 中运行链接服务器查询,可能会返回下列错误(即使 MSDTC 正在该服务器上运行):Server:Msg 8501, Level 16, State 3, Line 3 MSDTC on server 'server name' is unavailable.在 SQL Server 错误日志中,您会发现由运行该查询的 spid 引发的下列错误:Resour

一步一步学SQL Server BI 4:合并数据3

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 我们已经介绍了三种方法来实现数据流源和数据库数据的合并,也就是Excel中的数据和数据库里面的数据进行同步,存在的数据进行更新操作,不存在的添加数据,另外还可以扩展为,如果数据库为的数据在Excel数据源中不存在,则执行删除操作.接下来我们来介绍其它的方法来实现这样的目标. 我们在合并数据1中曾经介绍过,直接通过Merge和Merge Jone是无法直接实现的,不过

SQL Server 2000分布式事务错误解决

如果在Windows.NETServer上安装的SQLServer2000中运行链接服务器查询,可能会返回下列错误(即使MSDTC正在该服务器上运行): 症状如果在Windows.NETServer上安装的SQLServer2000中运行链接服务器查询,可能会返回下列错误(即使MSDTC正在该服务器上运行):Server:Msg8501,Level16,State3,Line3 MSDTConserver'servername'isunavailable.在SQLServer错误日志中,您会发现

SQL Server BI Step by Step SSIS 7 (End)

SQL Server BI Step by Step SSIS 7 (End) - 事务,错误输出,事件处理,日志记录 和其它程序一样,SSIS包同样需要健壮,稳定的运行,这样的程序才有可靠性和可伸缩性.SSIS提供了如下方面的支持: 1.事务: 可以对一个程序包设置成一个或者多个事务,甚至可以对两个程序包设置成一个事务.为了 保证数据的一致性,你还可以DTC事务或者SQL Server引擎级的事务. 2.检查点: 用来记录一个程序包出错时任务的运行情况,以便程序包再次启动时,直接从发生错误的

SQL Server BI Step by Step SSRS 1-Reporting Service 2008的新特性

今天我们开始SQL SERVER BI的另外一个重要的部分 --Reporting Service,相对于Integration Service和Analysis Service,Reporing Service在国内的使用者应该多很多.一方面由于Reporing Service费用比较低,直接附属在SQL SERVER中,另外一方面其实SSRS在很大程度上还是满足我们的报表 需求的. 在SQL Server 2008中,SSRS更是在很多方面都有所加强,"如果微软在2008的BI中投入了10美