集成服务和隔离级别

时间:2009-01-22 01:43:43

标签: ssis transactions isolation

我们有一个数据仓库包,我们的客户在白天针对他们的实时交易系统运行。在大多数客户端,这似乎工作正常,但在繁忙的客户端,我们会遇到死锁错误。

默认情况下,SSIS以隔离级别Serializable运行,这是SQL 2005上最高的隔离级别。

SSIS包只读取数据,但由于查询的大小而导致死锁,并且在其他进程正在更新/插入时,锁被升级为页锁。

客户端通常运行SQL 2005标准版,因此这是我们可以使用的唯一功能。

有没有人知道将包的IsolationLevel更改为ReadCommitted(或其他隔离级别)是否会解决这些锁定问题。如果它能解决它们会有任何副作用(幻读,不可重复读等)

谢谢,

1 个答案:

答案 0 :(得分:1)

对read-committed和repeatable-read隔离级别以及它们可能产生的潜在问题进行了很好的讨论:

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。