Sybase分布式事务在.Net中不工作
我正在使用Sybase ASE 16并试图在.Net中创建不受信任的事务。以下是我的代码,可用于SQL Server,但不能用于Sybase ASE数据库:Sybase分布式事务在.Net中不工作,.net,transactions,sybase,distributed,.net,Transactions,Sybase,Distributed,我正在使用Sybase ASE 16并试图在.Net中创建不受信任的事务。以下是我的代码,可用于SQL Server,但不能用于Sybase ASE数据库: public void DistTransaction() { try { var op = new TransactionOptions { IsolationLevel = IsolationLevel.ReadCom
public void DistTransaction()
{
try
{
var op = new TransactionOptions
{
IsolationLevel = IsolationLevel.ReadCommitted,
Timeout = TimeSpan.FromSeconds(60)
};
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew,op))
{
Transaction tx1 = Transaction.Current;
var tx = (System.EnterpriseServices.ITransaction)(TransactionInterop.GetDtcTransaction(Transaction.Current));
using (AseConnection conn1 = new AseConnection(connstring))
{
using (AseConnection conn2 = new AseConnection(connstring))
{
conn1.Open();
conn2.Open();
conn1.EnlistDistributedTransaction(tx);
conn2.EnlistDistributedTransaction(tx);
//conn1.EnlistTransaction(tx1);
//conn2.EnlistTransaction(tx1);
using (AseCommand cmd1 = conn1.CreateCommand())
{
cmd1.CommandText = "insert into dbo.Table1(Name) values('bnm')";
cmd1.ExecuteNonQuery();
}
using (AseCommand cmd2 = conn2.CreateCommand())
{
cmd2.CommandText = "insert into dbo.Table2(Id) values(45)";
cmd2.ExecuteNonQuery();
}
}
}
scope.Complete();
}
}
catch (Exception ex)
{
string msg = ex.Message;
}
}
第二个查询失败,它应该回滚第一个查询,但在Sybase ASE中不会这样做。我还在Sybase中启用了DTM,但没有区别
有什么想法吗?太复杂了,无法快速诊断。。。但我建议您单步执行该程序,并查看系统表,如SYSTTransactions,以查看打开的事务是否如您所期望的那样出现