如何使用ssis程序包中的事务管理

如何使用ssis程序包中的事务管理

ID:5655082

大小:99.50 KB

页数:4页

时间:2017-12-21

如何使用ssis程序包中的事务管理_第1页
如何使用ssis程序包中的事务管理_第2页
如何使用ssis程序包中的事务管理_第3页
如何使用ssis程序包中的事务管理_第4页
资源描述:

《如何使用ssis程序包中的事务管理》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、如何使用SSIS程序包中的事务管理   嵌入到SSIS中的事务处理可以很容易地满足你的要求。在我们开始进入到在SSIS中执行事务处理的具体步骤之前,让我们先来讨论事务隔离级别,SSIS中高级别的的事务,接着看看在SSIS包中利用事务去解决自己问题的一个实例。   事务隔离级别   事务隔离级别确定保持锁住状态的持续时间。我们将用SQLServer作为一个例子。以下事务隔离级别可在SQLServer中利用:   l未提交读(READUNCOMMITTED)-这些读操作没有获得共享锁,它们也不等待锁。这些一般涉及到脏读,因为你能读没有提交但是已经修改的数据,并且在你读它之后,它可能会回滚。 

2、  l提交读(READCOMMITTED)-这些读操作获得共享锁,并且等待在事务处理过程中修改的任何数据。   l重复读(REPEATABLEREAD)-和提交读一样,但此外,在事务处理期间,共享锁保持在行上读。换句话说,被读的任何行不能被其他的连接操作修改,一直到事务提交或者回滚。   l序列化(SERIALIZABLE)-跟重复读一样,但此外,如果在执行SELECT查询之后有新的行出现,那么任何其他的连接操作都不能插入行。换句话说,如果你通过序列化隔离级别来执行事务中的一个select语句,那么当你在同一个事务处理中再次执行select语句,你会得到完全相同的结果集。   SQLSe

3、rver2005增加了两个新的选项:   l把READ_COMMITTED_SNAPHOTON设置在数据库级别上的提交读的变化和通过提交读隔离级别的任何事务都不会获得共享锁,也不会等待任何锁。相反,在SELECT语句开始时,你会得到所有行的提交版本。   l一个命名为SNAPSHOT的新的隔离级别,在它所在的地方把ALLOW_SNAPSHOT_ISOLATIONON设置在数据库级别上,还有把事务隔离级别设置成snapshot的任何事务都不会获得共享锁,也不会等待任何锁。相反,在SELECT语句开始时,你会得到所有行的提交版本。   上述两个SQLServer2005改进是由在tempdb

4、(参考为versionstore)中保持行的提交版本而促成的。当一次读操作遇到已经被修改但没有提交的一行,它从versionstore中重新找回适当的最新提交的行。SQLServer自动执行versionstore的维护和通过。代码不需要做改动。   SSIS中的事务管理   事务支持内置到SSIS中。TransactionOption属性存在于程序包级别、容器级别(比如ForLoop、ForeachLoop和Sequence容器),还有只与任何控制流任务(比如,执行SQL任务,数据流任务等)相关的级别。   lRequired–如果一个事务已经启动,那么容器会加入其中,否则,容器本身会

5、启动一个新的事务。   lSupported–如果已经存在一个事务,那么容器会加入其中,它本身不会启动一个事务(这是默认情况)。   lNotSupported–不会加入现有事务中。   SSIS中的内置事务支持利用Microsoft分布式事务处理协调器(MSDTC)服务,这个服务必须正在运行。MSDTC也允许你执行分布式事务,比如在相同的事务中,更新一个SQLServer数据库和一个Oracle数据库。如果你执行一个使用了内置事务支持的SSIS程序包而MSDTC没有正在运行,那么你会得到如下的错误信息:  Error:0xC001401AatTransaction:TheSSISRun

6、timehasfailed  tostartthedistributedtransactionduetoerror0x8004D01B  "TheTransactionManagerisnotavailable.".TheDTCtransaction  failedtostart.ThiscouldoccurbecausetheMSDTCServiceisnotrunning.   还要注意的是,在默认的序列化隔离级别中,SSIS程序包内容也包含一个IsolationLevel属性。正如上文关于事务隔离级别的讨论,设置会影响锁的持续时间还有共享锁是否能够获得。   SSIS程序包示例  

7、 让我们来看看一个示例SSIS程序包,这个程序包将用于展示如何在程序包级别上执行事务和在程序包执行期间锁住一张表。   TestInitializationsequence容器用于创建一个测试环境。有两张表(TranQueue和TranQueueHistory)被创建,还有一行被插入到TranQueue表中。这可以帮助我们模拟SSIS程序包在一个事务内处理一组行的过程。TestInitializationsequence容器中的Tr

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。