我注意到BeginTransaction
此处的文档中有一个警告:
http://msdn.microsoft.com/en-us/library/86773566.aspx
当您的查询返回大量数据并调用 BeginTransaction 时,会引发 SqlException,因为 SQL Server 在使用 MARS 时不允许并行事务。为避免此问题,请始终在打开任何读取器之前将事务与命令、连接或两者关联。
这是我改变这个的建议吗:
sqlConn.Open();
System.Data.SqlClient.SqlTransaction trans = sqlConn.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted);
sqlCmd.Transaction = trans;
System.Data.SqlClient.SqlDataAdapter adapt = new System.Data.SqlClient.SqlDataAdapter(sqlCmd);
adapt.Fill(dt);
为此,这不是我通常在示例中看到的,在BeginTransaction
命令之前使用Open
命令...
System.Data.SqlClient.SqlTransaction trans = sqlConn.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted);
sqlCmd.Transaction = trans;
sqlConn.Open();
System.Data.SqlClient.SqlDataAdapter adapt = new System.Data.SqlClient.SqlDataAdapter(sqlCmd);
adapt.Fill(dt);
否则,任何人都可以举例说明这种谨慎所说的要避免什么吗?