如何追踪分布式传输错误?有什么方法可以确定所有连接仍然打开吗?我需要找到没有正确关闭的交易?
当我从适配器填充表时,使用以下代码偶尔会出现分布式事务错误。我怀疑错误可能不在此代码中,但这是错误倾向于弹出的地方,仅在第二次尝试时,第一次总是可以正常工作。
using (OracleConnection oraConnection = new OracleConnection(connectionString)){
using (OracleCommand oraCommand = new OracleCommand( "DB_SCHEMA." + rmd.storedprocName, oraConnection )){
oraCommand.CommandType = CommandType.StoredProcedure;
if ( rmd.parameters != null ){
for ( int i = 0; i <= rmd.parameters.GetUpperBound( 0 ); i++ )
{
OracleParameter oraParameter = new OracleParameter();
oraParameter.ParameterName = rmd.parameterNames[ i ];
oraParameter.OracleDbType = rmd.parameterTypes[ i ];
oraParameter.Size = 15;
string dataType = oraParameter.OracleDbType.ToString().ToUpper();
switch ( dataType )
{
case "VARCHAR2":
oraParameter.Value = rmd.parameters[ i ].ToString();
break;
case "CHAR":
oraParameter.Value = rmd.parameters[ i ].ToString();
break;
case "NUMBER":
oraParameter.Value = Convert.ToDouble( rmd.parameters[ i ] );
break;
case "DATE":
oraParameter.Value = Convert.ToDateTime( rmd.parameters[ i ] );
break;
default:
oraParameter.Value = rmd.parameters[ i ].ToString();
break;
}
oraCommand.Parameters.Add( oraParameter );
}
}
oraCommand.Parameters.Add( "RS", Oracle.DataAccess.Client.OracleDbType.RefCursor).Direction = ParameterDirection.Output;
OracleDataAdapter oraDataAdapter = new OracleDataAdapter( oraCommand );
oraDataAdapter.Fill( dataTable ); //< -- error is thrown here
}
}