Проблема с Oracle и asp.net, database link

HoTicE
Дата: 03.05.2005 12:57:37
Была процедурка, нормально работала по трехзвенке:
asp.net <->dbase.dll<->oracle
запрос к таблице из другого табличного пространства
select * from kadr.l_kart, работало все OK

теперь это табличное пространство на другом сервере.
настроен database link lnk_lhpro для соединения с этой базой, линк проверен - ок

select * from kadr.l_kart@lnk_lhpro
процедура валидная, запрос пробовал в sql*plus запускать - ок

но как только вызываю процедурку в asp.net - ругается
ORA-02041: client database did not begin a transaction ORA-06512: at "WH.PKG_WH", line 469 ORA-06512: at line 1

и показывает на строчку: owner.DataSource = WRS.getOwners();
где: owner - DropDownList
WRS - DBTIER.wh.workstations WRS = new DBTIER.wh.workstations();
namespace DBTIER {
	public class workstations {
		public OracleDataReader getOwners() {
			OracleConnection conn = new OracleConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
			OracleCommand cmd = conn.CreateCommand();
			cmd.CommandType = CommandType.StoredProcedure;
			cmd.CommandText = "WH.PKG_WH.get_owners";
			cmd.Parameters.Add(new OracleParameter("t_cr", OracleType.Cursor)).Direction = ParameterDirection.Output;
			conn.Open();
			OracleDataReader Rd = cmd.ExecuteReader(CommandBehavior.CloseConnection);
			return Rd;
	}
}
Пока небыло работы через линк все работало, в чем трабл подскажите pls!
HoTicE
Дата: 03.05.2005 14:24:47
Нашел в инете вот такую инфу - ответ авторитетного мэна из oracle support
на похожий вопрос
You are running into Oracle Client 8.1 client bug 914652. This problem was
exposed when we added Distributed transaction support to the Oracle Client
v1.1. There is a QFE available from our side that allows you to completely
disable distributed transactions by using a connection string keyword
(Enlist=false is not enough), please contact pss directly for the fix.

A better option would be to switch to a newer version of the Oracle Client,
this issue is fixed in v9.x
Hope this helps
Типа это баг и он пофиксен в 9.х а если нет 9-ки :((

кто сталкивался с этим HELP!!!
HoTicE
Дата: 03.05.2005 14:34:13
ему посоветовали использовать такую строку подключения
sConnection = "Provider=OraOLEDB.Oracle;Password=" & sDatabasePwd & ";User ID=" & sDatabaseSchema & ";Data Source=" & sDatabaseInstance & ";DistribTX=0;"
DistribTX=0 - запрещает распределенные транзакции.

у меня строка "Data Source=www;User ID=user;Password=pass;"

если делаю "Data Source=www;User ID=user;Password=pass;DistribTX=0"

то ругается
System.ArgumentException: Keyword not supported: 'distribtx'.

млин!, чета запутался я уже совсем.
HoTicE
Дата: 03.05.2005 15:34:13
Решение найдено.
Если кому интересно, вот:
public OracleDataReader getOwners() {
	OracleConnection conn = new OracleConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
	OracleCommand cmd = conn.CreateCommand();
	conn.Open();
				
	cmd.Transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);
	cmd.CommandText = "SET TRANSACTION READ ONLY";
	OracleDataReader Rd = cmd.ExecuteReader();
	Rd.Close() ;
								
	cmd.CommandType = CommandType.StoredProcedure;
	cmd.CommandText = "WH.PKG_WH.get_owners";
	cmd.Parameters.Add(new OracleParameter("t_cr", OracleType.Cursor)).Direction = ParameterDirection.Output;
				
	Rd = cmd.ExecuteReader(CommandBehavior.CloseConnection);
	cmd.Transaction.Commit();
	return Rd;
}