Sybase分布式事务在.Net中不工作

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

我正在使用Sybase ASE 16并试图在.Net中创建不受信任的事务。以下是我的代码,可用于SQL Server,但不能用于Sybase ASE数据库:

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,以查看打开的事务是否如您所期望的那样出现