根据这篇文章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 with Snapshot Isolation(而不仅仅是普通的ReadCommitted)
TransactionOptions options = new TransactionOptions();
options.Timeout = TimeSpan.FromMinutes(1);
options.IsolationLevel = IsolationLevel.ReadCommitted;
using (TransactionScope transaction = new
TransactionScope(TransactionScopeOption.Required, options))
{
}
答案 0 :(得分:3)
a)是的。默认情况下,隔离级别为Serializable。 http://msdn.microsoft.com/en-us/library/ms172152(v=vs.90).aspx
b)对于该事务,isolationlevel将只是ReadCommitted。对于快照,您需要
options.IsolationLevel = IsolationLevel.Snapshot;
http://msdn.microsoft.com/en-us/library/system.data.isolationlevel.aspx
答案 1 :(得分:0)
我不确定我认为您的隔离级别只是SnapShot而不是读取提交的快照,这是两种不同的隔离
它与SNAPSHOT隔离级别的不同之处在于它不是提供阅读器 使用事务启动时可用行的最后一个提交版本,读者获取语句启动时可用行的最后一个提交版本