隔离级别和加强它都不受支持

时间:2012-03-15 19:40:46

标签: sql-server database sql-server-2008

使用

  

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   的IsolationLevel)          在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;

我缺少什么?

1 个答案:

答案 0 :(得分:2)

用SqlClient替换OleDb(如评论中提到的Oded)。

或者,在开始事务之前执行此SQL命令:

SET TRANSACTION ISOLATION LEVEL SNAPSHOT;