SSIS 包中 ReadUncommitted 隔离级别的解决方法
Posted
技术标签:
【中文标题】SSIS 包中 ReadUncommitted 隔离级别的解决方法【英文标题】:Workarounds for ReadUncommitted Isolation level in an SSIS package 【发布时间】:2012-04-24 12:57:29 【问题描述】:SSIS 中的 ReadUncommitted IsolationLevel 是 Microsoft 承认的以下错误,但“不会修复”,如下所述。
http://connect.microsoft.com/SQLServer/feedback/details/498891/ssis-setting-isolationlevel-to-readuncommitted-still-uses-read-committed#details
相同的解决方法是什么?
【问题讨论】:
【参考方案1】:是的,但是你必须在你的源上通知sql命令,而不是在执行之前选择一个表并设置隔离级别:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
select * from test_isolation
并且包应该选择了可序列化的隔离级别(我认为这个错误可能是在组件上选择了未提交的读取)
请参阅此示例。我有一个包可以将值从表 test_isolation
复制到表 test_isolation_destination
我的两张桌子都是空的:
然后我开始了一个事务并运行下面的插入命令在test_isolation
上插入一行
此行是脏行,因为事务尚未提交。
然后,我运行包,你可以看到复制了一行:
然后,我回滚了事务,如您所见,该行已从源表中清除,但未从目标表中清除。
这证明包以读取未提交的隔离级别运行
【讨论】:
【参考方案2】:使用 SQL Server Native Client Provider(如果您的目标平台是 MS-SQL)并设置隔离级别以查看它是否有效?
【讨论】:
以上是关于SSIS 包中 ReadUncommitted 隔离级别的解决方法的主要内容,如果未能解决你的问题,请参考以下文章