2

根据这篇文章http://social.technet.microsoft.com/wiki/contents/articles/handling-transactions-in-sql-azure.aspx

SQL Azure default database wide setting is to enable read committed 
snapshot isolation (RCSI) 

我是否正确地假设:

A)以下代码默认为Serializable(覆盖数据库默认值)

        using (TransactionScope transaction = new TransactionScope())
        {                                                               

        }

B)以下代码默认为带有快照隔离的ReadCommitted(而不仅仅是普通的ReadCommitted)

        TransactionOptions options = new TransactionOptions();
        options.Timeout = TimeSpan.FromMinutes(1);
        options.IsolationLevel = IsolationLevel.ReadCommitted;

        using (TransactionScope transaction = new 
          TransactionScope(TransactionScopeOption.Required, options))
        {                                                               

        }
4

2 回答 2

3

a) 是的。默认情况下,隔离级别将是可序列化的。http://msdn.microsoft.com/en-us/library/ms172152(v=vs.90).aspx

b) 对于该事务,隔离级别将只是 ReadCommitted。对于快照,您需要

  options.IsolationLevel = IsolationLevel.Snapshot;

http://msdn.microsoft.com/en-us/library/system.data.isolationlevel.aspx

于 2012-08-03T13:46:35.237 回答
0

我不确定我认为您的隔离级别将只是 SnapShot 而不是读取提交的快照,这是两种不同的隔离

它与 SNAPSHOT 隔离级别的不同之处在于,它不是为读取器提供事务启动时可用的行的最后提交版本,而是读取器获取语句启动时可用的行的最后提交版本

于 2013-01-10T17:07:36.890 回答