集成服务入门(实验10)使用事务和检查点

  为了处理数据一致性,我们需要使用事务。

  在有多个任务时,可能在执行过程中遇到报错而停止,如果希望在修复问题之后从上一次报错的地方继续执行(而不是从头开始运行所有的任务),这时候可以使用检查点。


一、使用事务

  在本实验中,将添加2个执行T-SQL脚本的任务,并且故意使用第2个任务出错。

1. 添加任务

  从“SSIS工具箱”将“执行SQL任务”图标拖到“控制流”窗格,并更名为“Update TaxRate”。

  重复上一步骤,再添加一个“执行SQL任务”,并命名为“Update TaxType”。

wKiom1NY5DHA9EZlAAFTAcYZpzI527.jpg


  编辑“Update TaxRate”。

wKioL1NY5Aeg7HXnAAGCqNSi5Bo732.jpg

wKioL1NY5J2z2w2pAACkWzxETjk620.jpg


  编辑“Update TaxType”。

wKiom1NY5N6AFHlLAAKXuJuaaQ8860.jpg


wKioL1NY5MCgYUrbAACVjZQ2tnk119.jpg

  注意:运行这个脚本将导致报错。因为TaxType不是字符数据类型。


2. 调试

  启用调试。第一个任务执行成功了,但第二个执行失败。

wKiom1NY5Q6we27YAAGE9_2uDNk256.jpg


3. 使用事务

  先为整个包建立事务。在“控制流”窗格的空白处单击右键,然后在右键菜单中选择“属性”。

wKioL1NY5RfzJURbAAKQHzR9CEI853.jpg


  将TransactionOption改为Required。表示如果父任务没有事务,那么容器将启动一个事务;如果父任务已经存在一个事务,那么容器将联接父任务的事务。

wKiom1NY5UGQ_o1dAANUHUSFRPQ416.jpg


  同时选择“Update TaxRate”和“Update TaxType”任务,在属性窗格中将TransactionOption修改为Supported。表示如果已经存在一个父事务,那么容器将联接该事务。(Not Supported则表示:即使存在父事务,容器也不会联接该事务。)

wKioL1NY5RfB1XFBAANF5wNagXI052.jpg


4. 调试

  启用调试。

wKiom1NY5VDjDVxuAAGJj9Ho2Vk784.jpg


  在“进度”窗格可以看到,第二个任务出错,结果导致两个任务都执行失败了。

wKioL1NY5SaSiywBAAMU9v0asos708.jpg



二、使用检查点

1. 启用检查点

  在“控制流”窗格的空白片单击右键,在右键菜单中选择“属性”。

  由于事务会影响到所有的任务(如前面的实验,其中一个T-SQL脚本报错将导致2个任务都失败),所以先将事务的 TransactionOption 选项设为 Supported。

  为检查点的CheckpointFileName选项设置一个文件名。将CheckpointUsage选项设为IfExists,表示如果存在CheckpointFilename选项指定的检查点文件,那么将使用该文件,并根据检查点重新启动包。将SaveCheckpoints选项设为True,表示要写入检查点文件。

wKiom1NY5xWBpTzpAAJ407wjnFA261.jpg


2. 设置检查点

  选择“Update TaxType”任务,将属性的FailPackageOnFailure设为True。

wKioL1NZ5O-hWNRSAAI8Kv4jwIg376.jpg


3. 启用调试

  启用调试。第二个任务执行失败,信息都被保存在检查点文件中。

wKiom1NZ5vKio8IqAAS4A3b5G9M357.jpg


4. 修正脚本

  修改第二个任务的脚本,给TaxType赋一个整数型的数值。

wKiom1NY5ZnDIIMRAACU5MpInUU488.jpg


5. 再次调试

  然后再启用调试。可见两个任务都执行成功。

  打开“进度”窗格,可见这次调试是从上次的故障点继续往下执行(仅执行了第二个任务),第一个任务(上一次已经执行成功了)这次没有被执行。

wKioL1NZ5zTjBolYAAPwsVOHtNc321.jpg


本文出自 “我们一起追过的MSSQL” 博客,谢绝转载!

你可能感兴趣的:(SSIS)