集成服务和隔离级别
问题描述:
我们有一个数据仓库包,我们的客户可以在白天针对他们的实时交易系统运行数据仓库包。在大多数客户端,这似乎工作正常,但在繁忙的客户端,我们得到死锁错误。集成服务和隔离级别
默认情况下SSIS运行与序列化的隔离级别是SQL最高的隔离级别2005
SSIS包只读取数据,但死锁,因为查询和锁的大小产生在其他进程正在更新/插入时升级为页锁。
客户端通常运行SQL 2005的标准版,因此这是我们可以使用的唯一功能。
有谁知道是否将包的IsolationLevel更改为ReadCommitted(或其他隔离级别)将解决这些锁定问题。如果这本书能解决他们是否有任何副作用(幻读,不可重复读等)
感谢,
答
有读致力于和可重复的读隔离级别的大讨论,以及潜在的问题他们能产生:
http://blogs.msdn.com/craigfr/archive/2007/04/25/read-committed-isolation-level.aspx http://blogs.msdn.com/craigfr/archive/2007/05/09/repeatable-read-isolation-level.aspx
它是否影响你,取决于你的系统上运行更新的表模式和种类。
如果您只是在读取数据,您的最佳选择可能是快照隔离。 SSIS不支持它,但您可以避免SSIS事务并在SQL代码中发出BEGIN TRANSACTION。