跨数据库分布式事务的处理
using System;
using System.Collections.Generic;
using System.Text;
using System.EnterpriseServices;
using System.Data.SqlClient;
namespace myCOM
{
[Transaction(TransactionOption.Required)]
public class MyComClass : ServicedComponent
{
public SqlConnection Conn;
public SqlConnection Conn1;
public void test(string updateStr)
{
try
{
string connection = string.Format("server = pwdpc; database = Northwind; uid = sa; pwd = ******;");
SqlConnection Conn = new SqlConnection(connection);
Conn.Open();
string connection1 = string.Format("server = pwdpc; database = pubs; uid = sa; pwd = ******;");
SqlConnection Conn1 = new SqlConnection(connection1);
Conn1.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = Conn;
cmd.CommandType = System.Data.CommandType.Text;
string sqlSentence = string.Format("update dbo.Customers set CompanyName = '{0}' where CustomerID = 'ALFKI'", updateStr);
cmd.CommandText = sqlSentence;
cmd.ExecuteNonQuery();
//出异常
//int i = 0;
//int j = 1 / i;
SqlCommand cmd1 = new SqlCommand();
cmd1.Connection = Conn1;
cmd1.CommandType = System.Data.CommandType.Text;
string sqlSentence1 = string.Format("update dbo.authors set au_fname = '{0}' where au_lname = 'White'", updateStr);
cmd1.CommandText = sqlSentence1;
cmd1.ExecuteNonQuery();
ContextUtil.SetComplete();
Conn.Close();
Conn1.Close();
}
catch (Exception ex)
{
ContextUtil.SetAbort();
throw ex;
}
finally
{ }
}
}
}