SSIS包中ReadUncommitted隔离级别的变通方法

时间:2012-04-24 12:57:29

标签: sql sql-server ssis locking isolation-level

SSIS中的ReadUncommitted IsolationLevel是Microsoft针对以下内容确认的错误,但“不会修复”如下所述。

http://connect.microsoft.com/SQLServer/feedback/details/498891/ssis-setting-isolationlevel-to-readuncommitted-still-uses-read-committed#details

同样的解决方法是什么?

2 个答案:

答案 0 :(得分:2)

是的,但您必须在源代码上通知sql命令,而不是选择一个表并在执行之前设置隔离级别:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
select * from test_isolation

并且包应该选择可序列化的隔离级别(我认为错误可能是在组件上选择读取uncommited的事实)

请参阅此示例。我有一个包来复制表test_isolation到表test_isolation_destination

的值

这里我的桌子都是空的:

enter image description here

然后我启动了一个事务并运行了下面的插入命令以在test_isolation

上插入一行

enter image description here

此行是脏行,因为事务尚未提交。

然后,我运行了包,你可以看到复制了一行:

enter image description here

然后,我回滚了事务,你可以看到该行已从源表中清除,但未从目标表中清除。

enter image description here

这证明包运行时具有读取未提交的隔离级别

答案 1 :(得分:0)

使用SQL Server Native Client Provider(如果是MS-SQL中的目标平台)并设置隔离级别以查看它是否有效?