SSIS可靠性和扩展性—简介
来源:互联网 发布:淘宝内衣店简介 编辑:程序博客网 时间:2024/06/08 15:58
可靠性和扩展性是所有系统的最终目标之一,他们两个看起来有些对立,不过通常来讲他们又有相互的联系。错误和造成错误的条件是可靠性最明显的威胁。SSIS提供了解决这些情况的优雅的方法。这个章节中要关注的特性是错误输出和检验点,使用他们来实现可靠性,他们也可以保证包的执行性能和扩展性。
重新启动
一种经常遇到的情况,一个需要整夜执行的包执行失败了,需要重新执行它。如果其中一个步骤非常的耗费资源和时间,重新执行它是一件痛苦的事情。在DTS中没有类似“断点续传”的功能。重新执行一个失败的包是很容易再次出错的。由不同的策略在解决这些问问题,但是需要清楚DTS模型的工作原理,大多数DBA都没有这样的工作经验。
由于这些因素,SQL Server 2008中的检验点功能是非常难得的方法,在SSIS中检验点是包的重新启动的基础,它将包的执行状态写入到一个文件中。这些状态信息包括那个task已经执行过,那个task执行出错了。要正确地设置检验点文件,有三个包 属性和一个task属性需要设置:
- CheckpointFilename:这个属性必须设置,检验点文件的后缀是.chk
- CheckpointUsage: 是否使用检验点,有三种值来描述如何使用检验点
Never: 不使用检验文件
If Exists: 如果设置了CheckpointFilename属性,包将按照检验文件重新执行
Always: 总是使用检验文件重新执行,如果没有指定文件将报错 - SaveCheckpoints: 这是一个布尔值指定是否写入检验点,很明显这个值应该重视设置为true
- FailPackageOnFailure: 这个属性是在task中设置的,当要将一个task设置为重新执行的检验点,如果这个属性没有被设置为true,执行失败时信息不会被写入到检验点文件中,下次执行的时候将会从第一个task开始执行
注意:SSIS 包被细分成Control Flow和 Data Flow,只能在Control Flow中设置检验点而不能在Data flow中设置。如果在包的执行过程中没有出现错误,检验点文件也不会产生。检验点文件包含所有重新启动包的信息。
简单的Control Flow
我们首先从一个简单的例子开始如图1三个ExecuteSQL。
图1
在第二个task中我们设置一个错误,select 1/0,如图2
图2
我们假设第一个task是一个耗时耗力的任务,为了它在执行完之后不会被执行第2次,将检验点设置在这个任务上,首先设置包的属性如图3
图3
现在设置第二个task的属性如图4
图4
执行包,它在第二个task处失败如图5
图5
在这里如果这个是在DTS环境中我们修改package,并且做一些额外的工作保证task 1不会被再次执行,但是我们是用SSIS来创建的这个包,依赖检验点来实现这个。在错误输出重我们看到一些内容被写倒检验点文件中,如下:
SSIS package "CheckPoint.dtsx" starting.
Information: 0x40016045 at CheckPoint: The package will be saving checkpoints to file "D:\MyProject\IntegrationService\ProSSISChapter5\checkpoint\chkSimple3ExecuteSqltask.chk" during execution. The package is configured to save checkpoints.
Information: 0x40016049 at CheckPoint: Checkpoint file "D:\MyProject\IntegrationService\ProSSISChapter5\checkpoint\chkSimple3ExecuteSqltask.chk" update starting.
Information: 0x40016047 at 1: Checkpoint file "D:\MyProject\IntegrationService\ProSSISChapter5\checkpoint\chkSimple3ExecuteSqltask.chk" was updated to record completion of this container.
Error: 0xC002F210 at 2, Execute SQL Task: Executing the query "select 1/0" failed with the following error: "Divide by zero error encountered.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
Task failed: 2
Warning: 0x80014058 at 2: This task or container has failed, but because FailPackageOnFailure property is FALSE, the package will continue. This warning is posted when the SaveCheckpoints property of the package is set to TRUE and the task or container fails.
Information: 0x40016049 at CheckPoint: Checkpoint file "D:\MyProject\IntegrationService\ProSSISChapter5\checkpoint\chkSimple3ExecuteSqltask.chk" update starting.
Information: 0x40016047 at 2: Checkpoint file "D:\MyProject\IntegrationService\ProSSISChapter5\checkpoint\chkSimple3ExecuteSqltask.chk" was updated to record completion of this container.
SSIS package "CheckPoint.dtsx" finished: Failure.
在文件目录中我们也可以看到这个文件如图6
图6
现在我们修正task2种的错误:select 1/2,再次执行这个包结果如图7:
图7
Task1被忽略,从task2开始执行。这里注意task2的FailPackageOnFailure属性必须设置成true,否则的话检验文件不会被写入,再次执行的时候还是会从task1开始执行。我们来试一试如图8
图8
执行包,如图9它将仍然从task1开始执行,这不是我们希望的。
图9
这个例子简单地说明了检验点的工作过程,在实际的生产环境情况可能会很复杂。
- SSIS可靠性和扩展性—简介
- SSIS可靠性和扩展性—可扩展性
- SSIS可靠性和扩展性—事务
- SSIS可靠性和扩展性—错误输出
- SSIS可靠性和扩展性—事务
- 重删系统的可扩展性和可靠性
- SSIS简介
- 陈靓:如何构造高可靠性和高扩展性的云存储服务
- 可靠性预计标准简介
- 产品可靠性测试简介
- SSIS 学习之旅 SSIS 简介
- 自动化和扩展性概述
- 外接应用程序和扩展性
- 扩展性和存储限制
- 可用性和可靠性区别
- 可用性和可靠性区别
- 可用性和可靠性
- 数据迁移工具-SSIS和Spoon 区别简介 -从浅入深(1.控件的基本用法)
- Probability Meature 概率测度
- 不可思议的Css:border属性
- 检测cgi-bin漏洞存在方法
- easyios 教程
- android 将文件保存到sd卡上面(简单)
- SSIS可靠性和扩展性—简介
- Cocos2d-x 脚本语言Lua的使用
- Differences among list,set and map
- JS前端缓存缓存对象封装
- Hibernate中get和load方法的区别以及close()、clear()、evict()
- rsync使用说明#简单配置文档
- Shellshock漏洞回顾与分析测试
- 口令验证辨别真伪
- Web_JavaScript_JS表单验证;