2

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

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

SSIS 包仅读取数据,但由于查询的大小和锁升级为页面锁,而其他进程正在更新/插入,因此会创建死锁。

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

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

谢谢,

4

1 回答 1

1

对已提交读和可重复读隔离级别以及它们可能产生的潜在问题进行了很好的讨论:

http://blogs.msdn.com/craigfr/archive/2007/04/25/read-committed-isolation-level.aspx http://blogs.msdn.com/craigfr/archive/2007/05/09/repeatable -读取隔离级别.aspx

它是否会影响您,取决于表架构和系统上运行的更新类型。

如果您只读取数据,最好的选择可能是快照隔离。SSIS 不支持它,但您可以避免 SSIS 事务并在 SQL 代码中发出 BEGIN TRANSACTION。

于 2009-01-24T05:21:24.087 回答