欢迎来到天天文库
浏览记录
ID:13915160
大小:93.80 KB
页数:6页
时间:2018-07-24
《ssis 学习(8)事务》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、IntegrationServices学习(8):事务 事务,在数据库开发与应用中,发挥了重要的作用,但在IntegrationServices包开发过程中,我们还一直没有提到过这个概念,它是不是还是如此,能让各数据库兄弟和睦相处,团结一致,同进退、共存亡呢? 没错,哪里有DB活动,哪里就有Transaction参与,SSIS包也不例外。 在IntegrationServices包中,数据库事务有以下几方面的功能: (1)将几项任务的结果集收集到事务中,以确保数据一致的更新。 (2)确保对多台数据库服务器进行一
2、致的更新。 (3)确保对不同种类数据库进行一致的更新,比如MsSqlServer、Oracle、MySql等. (4)也可以在单个包中,执行几个相互独立的事务。 ...... 看来Transaction这东东,在SSIS包中,还功莫大焉。大家听起来,似乎是王婆卖瓜。下面我们来看一看,如何在SSIS包中启用Transaction? IntegrationServices中的事务是基于容器的,包括包、For循环、Foreach循环、序列容器等,如果容器启用了事务,默认情况下,该容器的子容器以及容器的组件对象,都自动
3、继承父级或者祖先级容器的事务。在这些容器中,都有一个共同的属性TransactionOption,以表明该容器是否支持事务。如图: Required:指示该容器启用一个事务,如果其父容器启用了事务,则自动联接该事务;相反,父容器没有启用事务,则该容器会启动自已的事务。 Supported:指示容器不启动事务,但是如果父容器启动了事务,它会自动联接该事务;相反,父容器没有启动事务,它不会启动自已的事务。 NotSupported:指示容器不启动事务,也不联接现有事务。也就是说即使父容器启动了事务,他不会联接该事务,
4、也不会启动自已的事务。 下面我们用一个实例来说明在Integrationservices开发,如何启动事务? 首先我们在数据库中建立一张表,通过设置各容器的不同属性,看看其中的数据会发生什么样的变化? CREATE TABLE [dbo].[Test1]( [ID] [smallint] NULL, [str] [varchar](50) NULL) ON [PRIMARY] 然后在SqlServerBusinessIntelligenceDevelopmentStudio中创建一个包,如图:
5、包中有四个SQL执行,它们执行的SQL命令如下: INSERT INTO [Test1]([ID],[str])SELECT 1,'AA'INSERT INTO [Test1]([ID],[str])SELECT 2,'BB'INSERT INTO [Test1]([ID],[str])SELECT 3,'CC'INSERT INTO [Test1]([ID],[str])SELECT 'DD','DD' ――制造一
6、个错误. 很明显,前三个SQL 任务会执行成功,第四个SQL任务会执行失败,各对象的TransactionOption属性设置如下: 包:TransactionOption=Required;4个SQL任务的TransactionOption=Supported。 点击[Development],结果如下: 我们回到DB中去看一看表中的结果, 一条记录也没有,说明Transaction起作用了,如果其它设置都不变,修改”任务AA”的属性TransactionOption=NotSupported,再次运行,
7、就有一条记录了,如图: 上面是以包为容器,容器中四个SQL任务,它们对事务的响应情况。 下面,我们再看一看另一种情况:包中有两个序列容器,一个For循环,四个SQL任务(执行的SQL命令不变),它们的关系如图所示: 通过测试,每一个对象 TransactionOption值的不同的设置,其结果也炯异 S-AS-BFor容器AABBCCDD结果记录数结果记录RequiredSupportedSupportedSupportedSupportedSupportedSupported0 RequiredRequi
8、redRequiredSupportedSupportedSupportedSupported0 RequiredRequiredNotSupportedSupportedSupportedSupportedSupported2 AA、BBRequiredNotSupportRequiredSupportSuppor
此文档下载收益归作者所有