使用
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
transaction) at System.Data.OleDb.OleDbConnectionInternal.BeginTransaction(IsolationLevel isolationLevel) at System.Data.OleDb.OleDbConnection.BeginTransaction(IsolationLevel isolationLevel)
我确保在 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;
有什么我想念的吗?
最佳答案
用 SqlClient 替换 OleDb(正如 Oded 在评论中所建议的那样)。
或者,在开始事务之前执行此 SQL 命令:
SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
关于sql-server - 既不支持隔离级别也不支持它的加强,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9726958/