我正在从TransactionScope中执行多个存储过程。有没有办法执行SqlCommand(虽然仍然在using语句的范围内)但是从事务中删除它?
在它之前和之后执行的SqlCommands确实需要在一个事务中执行。
答案 0 :(得分:2)
您必须打开另一个连接并在那里执行您的声明。但要注意:该语句不会看到来自未提交事务的任何更改。
答案 1 :(得分:1)
您需要创建一个新范围并指定Supress
选项。
答案 2 :(得分:1)
您可以创建一个新的SqlConnection实例,并将“Enlist”连接参数设置为“false”
SqlConnectionStringBuilder csBuilder = new SqlConnectionStringBuilder(existingCon.ConnectionString);
csBuilder.Enlist = false;
SqlConnection newConnection = new SqlConnection(csBuilder.ConnectionString);
SqlCommand commandNotInTheTx = newConnection.CreateCommand();
答案 3 :(得分:0)
IIRC,事务登记要求连接成为同一连接池的成员。如果您为第二个连接使用稍微不同的连接字符串(可能使用不同的Application Name
),则可能允许它绕过登记。
请注意,不要意外地开始使用分布式事务和DTC。