Использование
Microsoft SQL Server 2008 (SP1)
Попытка создать транзакцию следующим образом:
OleDbConnection con; OleDbTransaction transaction = null; ... transaction = con.BeginTransaction(IsolationLevel.Snapshot);
И получить ошибку:
System.Data.OleDb.OleDbException (0x8004D008): Neither the isolation level nor a strengthening of it is supported. at System.Data.OleDb.OleDbTransaction.ProcessResults(OleDbHResult hr) at System.Data.OleDb.OleDbTransaction.BeginInternal(ITransactionLocal транзакция) в System.Data.OleDb.OleDbConnectionInternal.BeginTransaction (IsolationLevel изоляционный уровень) в System.Data.OleDb.OleDbConnection.BeginTransaction (IsolationLevel изоляционный уровень * * 1015Я удостоверился, что запустил следующее в SQL Server Management Studio: ALTER DATABASE mydb SET SINGLE_USER WITH ROLLBACK IMMEDIATE; ALTER DATABASE mydb SET ALLOW_SNAPSHOT_ISOLATION ON; ALTER DATABASE mydb SET READ_COMMITTED_SNAPSHOT ON; ALTER DATABASE mydb SET MULTI_USER; Что-нибудь, что мне не хватает?
System.Data.OleDb.OleDbException (0x8004D008): Neither the isolation level nor a strengthening of it is supported. at System.Data.OleDb.OleDbTransaction.ProcessResults(OleDbHResult hr) at System.Data.OleDb.OleDbTransaction.BeginInternal(ITransactionLocal
транзакция) в System.Data.OleDb.OleDbConnectionInternal.BeginTransaction (IsolationLevel изоляционный уровень) в System.Data.OleDb.OleDbConnection.BeginTransaction (IsolationLevel изоляционный уровень *
ALTER DATABASE mydb SET SINGLE_USER WITH ROLLBACK IMMEDIATE; ALTER DATABASE mydb SET ALLOW_SNAPSHOT_ISOLATION ON; ALTER DATABASE mydb SET READ_COMMITTED_SNAPSHOT ON; ALTER DATABASE mydb SET MULTI_USER;
Что-нибудь, что мне не хватает?
Замените OleDb на SqlClient (как предложено Одедом в комментарии).
Или, альтернативно, выполните эту команду SQL перед началом транзакции:
SET TRANSACTION ISOLATION LEVEL SNAPSHOT;