Issue in transactions with informix using DRDA
Posted in 2016
Roger ran a transaction via .NET against Informix 11.70 on HP-UX where one insert hit a local table and another a synonym pointing to a table in a remote instance; the rollback only undid the local insert, and switching to XA/TransactionScope gave error -926 "database server is not licensed for distributed data access." Discussion covered Informix edition licensing (Art) and .NET distributed-transaction handling. IBM's Satyan explained that distributed SQL (dbname@server:table synonyms) isn't supported inside a distributed transaction, and that the DRDA driver (IBM.Data.DB2) must be used with System.Transactions/TransactionScope, letting MS DTC drive two-phase commit over separate connections. Roger tested Satyan's sample two-database TransactionScope code and confirmed it worked, concluding remote synonyms can't be used this way with DRDA.
Auto-generated by DrWatson from the posts below — may be imperfect; read the full thread.
Topics: General Discussion
Hi, My environment: Informix 11.70 FC8W1 in HPUX 11iv3 64 bits. Anybody knows how to use a distributed transaction in Informix with DRDA. For example: Instance 1, database db1: create table "informix".rviweb ( a integer ); Instance 2, database db2: create table "informix".rvidbtecnica ( a integer ); We use synonyms on remote instances: Instance 1, database db1: create synonym "informix".rvidbtecnica for db2@instance2:"informix".rvidbtecnica; code fragment (VB): Public Sub RunSqlTransaction(ByVal myConnString As String) Dim myConnection As New IfxConnection(myConnString) -- Execute in db1 myConnection.Open() Dim myCommand As IfxCommand = myConnection.CreateCommand() Dim myTrans As IfxTransaction myTrans = myConnection.BeginTransaction() myCommand.Connection = myConnection myCommand.Transaction = myTrans myCommand.CommandText = "Insert into rviweb values (1)" myCommand.ExecuteNonQuery() myCommand.CommandText = "Insert into rvidbtecnica values (1)" myCommand.ExecuteNonQuery() myTrans.Rollback() End Sub The problem is that the rollback is only for the first query, but the second query is committed. Do you provide any clues about this behaviour with informix with DRDA and IBM Data Server Provider for .NET ? Thanks in advance, Roger
Hi, this is not specific to Informix, but a request for .NET Transaction manager. We are using the XA transaction from Java, but there are sources describing the Transaction handling from .NET. See eg. http://www.codeproject.com/Articles/690136/All-About-TransactionScope Also: check the MSDN reference for System.Transactions. Hope that gives you some hints. Marcus Haarmann Von: "ROGER VILCA" <rvilca@luzdelsur.com.pe> An: "ids" <ids@iiug.org> Gesendet: Mittwoch, 9. November 2016 00:19:09 Betreff: Issue in transactions with informix using DRDA [38091] Hi, My environment: Informix 11.70 FC8W1 in HPUX 11iv3 64 bits. Anybody knows how to use a distributed transaction in Informix with DRDA. For example: Instance 1, database db1: create table "informix".rviweb ( a integer ); Instance 2, database db2: create table "informix".rvidbtecnica ( a integer ); We use synonyms on remote instances: Instance 1, database db1: create synonym "informix".rvidbtecnica for db2@instance2:"informix".rvidbtecnica; code fragment (VB): Public Sub RunSqlTransaction(ByVal myConnString As String) Dim myConnection As New IfxConnection(myConnString) -- Execute in db1 myConnection.Open() Dim myCommand As IfxCommand = myConnection.CreateCommand() Dim myTrans As IfxTransaction myTrans = myConnection.BeginTransaction() myCommand.Connection = myConnection myCommand.Transaction = myTrans myCommand.CommandText = "Insert into rviweb values (1)" myCommand.ExecuteNonQuery() myCommand.CommandText = "Insert into rvidbtecnica values (1)" myCommand.ExecuteNonQuery() myTrans.Rollback() End Sub The problem is that the rollback is only for the first query, but the second query is committed. Do you provide any clues about this behaviour with informix with DRDA and IBM Data Server Provider for .NET ? Thanks in advance, Roger ******************************************************************************* Forum Note: Use "Reply" to post a response in the discussion forum.
When I use XA transaction with .Net, the informix launchs this error: ERROR [IX000] [IBM][IDS/UNIX64] The database is not licensed for distributed data access. The informix error is -926. Best regards, Roger
What Informix Edition are you using? Some editions do not support distributed transactions! Specifically only Enterprise and Advanced Enterprise Edition support distributed transactions in production instances and Developer Edition also but that Edition is not for production use. See here: http://www.ibm.com/developerworks/data/library/techarticle/dm-0801doe/index.html Art Art S. Kagel, President and Principal Consultant ASK Database Management www.askdbmgt.com Blog: http://informix-myview.blogspot.com/ Disclaimer: Please keep in mind that my own opinions are my own opinions and do not reflect on the IIUG, nor any other organization with which I am associated either explicitly, implicitly, or by inference. Neither do those opinions reflect those of other individuals affiliated with any entity with which I am affiliated nor those of the entities themselves. On Tue, Nov 8, 2016 at 6:53 PM, ROGER VILCA <rvilca@luzdelsur.com.pe> wrote: > When I use XA transaction with .Net, the informix launchs this error: > > ERROR [IX000] [IBM][IDS/UNIX64] The database is not licensed for > distributed > data access. > > The informix error is -926. > > Best regards, > Roger > > > ************************************************************ > ******************* > Forum Note: Use "Reply" to post a response in the discussion forum. > > --001a114b3de8ec51620540d3016a
Hi Roger, In case of distributed transaction, application don't need to explicitly start a transaction. The Ambient Transaction will be initiated by the Distributed Transaction Manager based on the transaction scope criteria what application has specified. That means you may put all heterogeneous database operations wrapped in a TransactionScope block as shown in the pseudo code. using(TransactionScope scope =3D new TransactionScope()) { // Perform all DB Operation related to this Transaction here // Eg: // Withdraw $100 from oracle=5Fdb // Deposit $100 to Informix=5Fdb scope.Complete(); // If there is any unhandled exception by now // then the Transaction Manager will initiate rollback for all DBs. // If there is no unhandled exception within this block then // the Transaction Manager will proceed for phase-1 of the P2C. // If Phase-1 got OK from all participant servers, then the // Transaction Manager will initiate phase-2 with commit // else it will be a rollback for all DBs } FYI: You may specify appropriate TransactionScopeOption based on your application need. For example: using (TransactionScope scope =3D new TransactionScope( TransactionScopeOption.Required, timeout)) {} Please see MSDN for more information related to TransactionScope. Regards, Satyan Advisory Software Engineer R&D - IBM Information Management Division 11200 Lakeview, Lenexa, KS 66219 Tel: 913 599 8792 (T/L: 337-8792) From: "ROGER VILCA" <rvilca@luzdelsur.com.pe> To: ids@iiug.org Date: 11/08/2016 05:20 PM Subject: Issue in transactions with informix using DRDA [38091] Sent by: ids-bounces@iiug.org Hi, My environment: Informix 11.70 FC8W1 in HPUX 11iv3 64 bits. Anybody knows how to use a distributed transaction in Informix with DRDA. For example: Instance 1, database db1: create table "informix".rviweb ( a integer ); Instance 2, database db2: create table "informix".rvidbtecnica ( a integer ); We use synonyms on remote instances: Instance 1, database db1: create synonym "informix".rvidbtecnica for db2@instance2:"informix".rvidbtecnica; code fragment (VB): Public Sub RunSqlTransaction(ByVal myConnString As String) Dim myConnection As New IfxConnection(myConnString) -- Execute in db1 myConnection.Open() Dim myCommand As IfxCommand =3D myConnection.CreateCommand() Dim myTrans As IfxTransaction myTrans =3D myConnection.BeginTransaction() myCommand.Connection =3D myConnection myCommand.Transaction =3D myTrans myCommand.CommandText =3D "Insert into rviweb values (1)" myCommand.ExecuteNonQuery() myCommand.CommandText =3D "Insert into rvidbtecnica values (1)" myCommand.ExecuteNonQuery() myTrans.Rollback() End Sub The problem is that the rollback is only for the first query, but the second query is committed. Do you provide any clues about this behaviour with informix with DRDA and IBM Data Server Provider for .NET ? Thanks in advance, Roger ***************************************************************************= **** Forum Note: Use "Reply" to post a response in the discussion forum.
Hi Art, I use Informix 11.70FC8 Enterprise Edition. By the way, How I can verify if my installation is trully with enterprise edition, or by error is installed other edition by error ? Thanks, Roger
By the version code: -- Advanced Enterprise/Enterprise Edition - No code after the sub-version # -- Advanced Workgroup/Workgroup Edition - WE follows the sub-version # -- Express Edition - I think that this has "EE" at the end, but I haven't seen any of these running -- Innovator-C Edition - IE follows the sub-version # -- Developers Edition - DE follows the sub-version # Art Art S. Kagel, President and Principal Consultant ASK Database Management www.askdbmgt.com Blog: http://informix-myview.blogspot.com/ Disclaimer: Please keep in mind that my own opinions are my own opinions and do not reflect on the IIUG, nor any other organization with which I am associated either explicitly, implicitly, or by inference. Neither do those opinions reflect those of other individuals affiliated with any entity with which I am affiliated nor those of the entities themselves. On Tue, Nov 8, 2016 at 7:16 PM, ROGER VILCA <rvilca@luzdelsur.com.pe> wrote: > Hi Art, > > I use Informix 11.70FC8 Enterprise Edition. > > By the way, > How I can verify if my installation is trully with enterprise edition, or > by > error is installed other edition by error ? > > Thanks, > Roger > > > ************************************************************ > ******************* > Forum Note: Use "Reply" to post a response in the discussion forum. > > --001a114b05fc68c1d10540d37083
OK. Returning to original question, I believe that informix doesn't work with distributed transaction with DRDA (IBM DataServer .NET provider). I process a local table and a table in a remote instance acceded by a synonym, all in a transaction. The same code works with no problem when I use client SDK (IBM Informix .Net Provider). It use the SQLI protocol. Public Sub RunSqlTransaction(ByVal myConnString As String) Dim myConnection As New IfxConnection() myConnection.ConnectionString = myConnString myConnection.Open() Dim myCommand As IfxCommand = myConnection.CreateCommand() Dim myTrans As IfxTransaction myTrans = myConnection.BeginTransaction() myCommand.Connection = myConnection myCommand.Transaction = myTrans Try myCommand.CommandText = "Insert into rvilocal values (2)" -- local myCommand.ExecuteNonQuery() myCommand.CommandText = "Insert into rviremote values (2)" -- synonym of a table of a remote instance myCommand.ExecuteNonQuery() myTrans.Rollback() Catch e As Exception ... Finally myConnection.Close() End Try End Sub 'RunSqlTransaction Result: The value 2 is not inserted in the local table (correct), but is inserted in the remote table (incorrect). Please any clues, Thanks, Roger
Hi Roger, The application code that you mention is not a good approach for distributed transaction (DT). With this approach, it will become extremely complex as on when more heterogeneous servers are getting added to the transaction. The recemented choice will be to relies on DT infrastructure provided by ADO.NET . These are the two variations provided by ADO.NET for DT. Enterprise Services (legacy: may not be a preferred choice now) System.Transactions (it is the latest and simple to usage as well) https://msdn.microsoft.com/en-us/library/ms254973(v=3Dvs.110).aspx . The IBM DB2 .NET Driver (which DRDA protocol) support both the abov approach while connecting to Informix Server. FYI: IBM.Data.Informix namespace is no more supported by DRDA. The only supported driver by using DRDA is IBM.Data.DB2, If so you may have to make application code change to use that. For example: IfxConnection becomes DB2Connection . The Informix Native .NET Driver (the driver shipped with CSDK ) have no support for System.Transactions yet. . With the ADO.NET provided infrastructure, application don't need to worry about the complexities of Distributed Transaction. The application hardly need to put any extra effort even if more number of heterogeneous RDBMS involved with the same DT. . Under the cover the Distributed Transaction Coordinate (in this case MS DTC) initiate Two Phase Commit (2PC) Protocol with each of the participating database. In case of Informix the 2PC Protocol used will be XA (FYI: the XA will be transparent to the application and the application don't need to worry about the complexities of XA.) Regards, Satyan Advisory Software Engineer R&D - IBM Information Management Division 11200 Lakeview, Lenexa, KS 66219 Tel: 913 599 8792 (T/L: 337-8792) ids-bounces@iiug.org wrote on 11/09/2016 10:39:54 AM: > From: "ROGER VILCA" <rvilca@luzdelsur.com.pe> > To: ids@iiug.org > Date: 11/09/2016 10:40 AM > Subject: Re: Issue in transactions with informix using DRDA [38104] > Sent by: ids-bounces@iiug.org > > OK. > > Returning to original question, I believe that informix doesn't work with > distributed transaction with DRDA (IBM DataServer .NET provider). > > I process a local table and a table in a remote instance acceded by > a synonym, > all in a transaction. > > The same code works with no problem when I use client SDK (IBM Informix .Net > Provider). It use the SQLI protocol. > > Public Sub RunSqlTransaction(ByVal myConnString As String) > > Dim myConnection As New IfxConnection() > > myConnection.ConnectionString =3D myConnString > > myConnection.Open() > > Dim myCommand As IfxCommand =3D myConnection.CreateCommand() > > Dim myTrans As IfxTransaction > > myTrans =3D myConnection.BeginTransaction() > > myCommand.Connection =3D myConnection > > myCommand.Transaction =3D myTrans > > Try > > myCommand.CommandText =3D "Insert into rvilocal values (2)" -- local > > myCommand.ExecuteNonQuery() > > myCommand.CommandText =3D "Insert into rviremote values (2)" -- synonym of a > table of a remote instance > > myCommand.ExecuteNonQuery() > > myTrans.Rollback() > > Catch e As Exception > > .... > > Finally > > myConnection.Close() > > End Try > > End Sub 'RunSqlTransaction > > Result: > The value 2 is not inserted in the local table (correct), but is inserted in > the remote table (incorrect). > > Please any clues, > > Thanks, > Roger > > > ***************************************************************************= **** > Forum Note: Use "Reply" to post a response in the discussion forum. >
I probed with the following code, utilizing System.Transactions and it raises an error: ERROR [IX000] [IBM]IDS/UNIX64] The database server is not licensed for distributed data access. ... Imports IBM.Data.DB2 Imports System.Transactions ... Public Sub RunSqlTransactionDRDA(ByVal myConnString As String) Using ts As New TransactionScope() Using myConnection1 As New DB2Connection(myConnString) myConnection1.Open() Dim myCommand As DB2Command = myConnection1.CreateCommand() myCommand.Connection = myConnection1 Try myCommand.CommandText = "Insert into rvilocal values (9)" myCommand.ExecuteNonQuery() myCommand.CommandText = "Insert into rviremota values (9)" myCommand.ExecuteNonQuery() ' raise the error myTrans.Commit() ts.Complete() Catch e As IfxException MsgBox(e.Message) ts.Dispose() Finally myConnection1.Close() End Try End Using End Using End Sub Please any clues
Hi Art, I think you mix up distributed (XA) transactions and distributed SQL. From my point of view, distributed SQL, as described in the feature list would be the access from one DB server to another (such as select .... from database@foreignserver:table where ...). In contrary, the XA transaction just addresses the management of global transaction IDs, which could include also foreign database systems in the same transaction (e.g. you could have one Informix connection + one Postgres connection in the same transaction, or alternatively two Informix connections to separate Instances, not knowing about each other). The benefit is only the two phase commit to be consistent over separate data sources. From my point of view, this is allowed in all editions (even Innovator can do that). The thing we did not test is to do this with a DRDA driver (we are using the ifxjdbc driver always). There should not be any difference in behaviour from the server side, unless DRDA checks for some signs which are not respected by the ifxjdbc driver. Marcus Haarmann Von: "Art Kagel" <art.kagel@gmail.com> An: "ids" <ids@iiug.org> Gesendet: Mittwoch, 9. November 2016 01:05:01 Betreff: Re: Issue in transactions with informix using DRDA [38094] What Informix Edition are you using? Some editions do not support distributed transactions! Specifically only Enterprise and Advanced Enterprise Edition support distributed transactions in production instances and Developer Edition also but that Edition is not for production use. See here: http://www.ibm.com/developerworks/data/library/techarticle/dm-0801doe/index.html Art Art S. Kagel, President and Principal Consultant ASK Database Management www.askdbmgt.com Blog: http://informix-myview.blogspot.com/ Disclaimer: Please keep in mind that my own opinions are my own opinions and do not reflect on the IIUG, nor any other organization with which I am associated either explicitly, implicitly, or by inference. Neither do those opinions reflect those of other individuals affiliated with any entity with which I am affiliated nor those of the entities themselves. On Tue, Nov 8, 2016 at 6:53 PM, ROGER VILCA <rvilca@luzdelsur.com.pe> wrote: > When I use XA transaction with .Net, the informix launchs this error: > > ERROR [IX000] [IBM][IDS/UNIX64] The database is not licensed for > distributed > data access. > > The informix error is -926. > > Best regards, > Roger > > > ************************************************************ > ******************* > Forum Note: Use "Reply" to post a response in the discussion forum. > > --001a114b3de8ec51620540d3016a ******************************************************************************* Forum Note: Use "Reply" to post a response in the discussion forum.
I do understand the difference. However, the original post didn't mention XA transactions and did mention transactions that included updating data in remote synonyms. I did not notice that this follow up post that I responded to was talking about XA transactions. The operation as originally described COULD be handled internally to Informix using Informix's SQLI Distributed Transactions which DO implement 2-Phase Commit (has since the early '90s). That level of distributed transaction is what I was referring to. Art Art S. Kagel, President and Principal Consultant ASK Database Management www.askdbmgt.com Blog: http://informix-myview.blogspot.com/ Disclaimer: Please keep in mind that my own opinions are my own opinions and do not reflect on the IIUG, nor any other organization with which I am associated either explicitly, implicitly, or by inference. Neither do those opinions reflect those of other individuals affiliated with any entity with which I am affiliated nor those of the entities themselves. On Fri, Nov 11, 2016 at 9:49 AM, Marcus Haarmann <marcus.haarmann@midoco.de> wrote: > Hi Art, > > I think you mix up distributed (XA) transactions and distributed SQL. > >From my point of view, distributed SQL, as described in the feature list > would > be the access from one DB server > to another (such as select .... from database@foreignserver:table where > ...). > In contrary, the XA transaction just addresses the management of global > transaction IDs, which could include > also foreign database systems in the same transaction (e.g. you could have > one > Informix connection + one Postgres connection > in the same transaction, or alternatively two Informix connections to > separate > Instances, not knowing about each other). > The benefit is only the two phase commit to be consistent over separate > data > sources. > >From my point of view, this is allowed in all editions (even Innovator > can do > that). > The thing we did not test is to do this with a DRDA driver (we are using > the > ifxjdbc driver always). > There should not be any difference in behaviour from the server side, > unless > DRDA checks > for some signs which are not respected by the ifxjdbc driver. > > Marcus Haarmann > > Von: "Art Kagel" <art.kagel@gmail.com> > An: "ids" <ids@iiug.org> > Gesendet: Mittwoch, 9. November 2016 01:05:01 > Betreff: Re: Issue in transactions with informix using DRDA [38094] > > What Informix Edition are you using? Some editions do not support > distributed transactions! Specifically only Enterprise and Advanced > Enterprise Edition support distributed transactions in production instances > and Developer Edition also but that Edition is not for production use. See > here: > > > http://www.ibm.com/developerworks/data/library/ > techarticle/dm-0801doe/index.html > > Art > > Art S. Kagel, President and Principal Consultant > ASK Database Management > www.askdbmgt.com > > Blog: http://informix-myview.blogspot.com/ > > Disclaimer: Please keep in mind that my own opinions are my own opinions > and do not reflect on the IIUG, nor any other organization with which I am > associated either explicitly, implicitly, or by inference. Neither do > those opinions reflect those of other individuals affiliated with any > entity with which I am affiliated nor those of the entities themselves. > > On Tue, Nov 8, 2016 at 6:53 PM, ROGER VILCA <rvilca@luzdelsur.com.pe> > wrote: > > > When I use XA transaction with .Net, the informix launchs this error: > > > > ERROR [IX000] [IBM][IDS/UNIX64] The database is not licensed for > > distributed > > data access. > > > > The informix error is -926. > > > > Best regards, > > Roger > > > > > > ************************************************************ > > ******************* > > Forum Note: Use "Reply" to post a response in the discussion forum. > > > > > > --001a114b3de8ec51620540d3016a > > > ************************************************************ > ******************* > Forum Note: Use "Reply" to post a response in the discussion forum. > > > ************************************************************ > ******************* > Forum Note: Use "Reply" to post a response in the discussion forum. > > --94eb2c12cad0246566054108e3fd
Hi Roger,
One possibility for getting this error is the usage of
distributed SQL (the SQL that impact multiple databases)
within distributed transaction. Distributed SQL is
not supported within distributed transaction.
Can you please check the application code to make sure
no distributed SQL are being used while performing
distributed transaction?.
.
Just for making sure the distributed transaction
functionality works on your environment can you
please try a very small demo. If this works then
isolating the remaining problem should be relatively easy.
.
Here is a snapshot of the code that may leverage for this simple demo.
-- do this Server side Setup:
CREATE DATABASE saving WITH LOG;
CREATE TABLE st (id INT, c1 INT);
INSERT INTO st VALUES (1, 100);
CREATE DATABASE checking WITH LOG;
CREATE TABLE ct (id INT,c1 INT);
INSERT INTO ct VALUES (1, 100);
--UPDATE st SET c1=3Dc1-1 WHERE id=3D1;
--UPDATE ct SET c1=3Dc1+1 WHERE id=3D1;
public void TestTxn()
{
String ConnStrSavingDB =3D "";
String ConnStrCheckingDB =3D "";
TransactionOptions options;
TransactionScope scope =3D null;
try
{
options =3D new TransactionOptions();
options.Timeout =3D new TimeSpan(0, 3, 0);
using (scope =3D new TransactionScope(
TransactionScopeOption.Required, options))
{
int return1 =3D DatabaseWork( ConnStrSavingDB, true);
int return2 =3D DatabaseWork( ConnStrCheckingDB, false);
if (return1 < 0 || return2 < 0)
{
// Throw some exception here,
// so that the transaction will abort
}
scope.Complete();
}
}
catch (Exception exp)
{
// Any cleanup if needed
}
finally
{
scope.Dispose();
}
}
public int DatabaseWork(String ConnStr, bool isWithdraw )
{
int result =3D 0;
DB2Connection Conn =3D new DB2Connection(ConnStr);
Conn.Open();
try
{
DB2Command Cmd =3D Conn.CreateCommand();
if ( isWithdraw)
Cmd.CommandText =3D "UPDATE st SET c1=3Dc1-2 WHERE id=3D1";
else
Cmd.CommandText =3D "UPDATE ct SET c1=3Dc1+2 WHERE id=3D1";
Cmd.ExecuteNonQuery();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
result =3D -1;
}
finally
{
Conn.Close();
}
return result;
}
Regards,
Satyan
Advisory Software Engineer
R&D - IBM Information Management Division
11200 Lakeview, Lenexa, KS 66219
Tel: 913 599 8792 (T/L: 337-8792)
ids-bounces@iiug.org wrote on 11/09/2016 01:42:30 PM:
> From: "ROGER VILCA" <rvilca@luzdelsur.com.pe>
> To: ids@iiug.org
> Date: 11/09/2016 01:43 PM
> Subject: Re: Issue in transactions with informix using DRDA [38106]
> Sent by: ids-bounces@iiug.org
>
> I probed with the following code, utilizing System.Transactions and it
raises
> an error:
>
> ERROR [IX000] [IBM]IDS/UNIX64] The database server is not licensed for
> distributed data access.
>
> ....
> Imports IBM.Data.DB2
> Imports System.Transactions
> ....
>
> Public Sub RunSqlTransactionDRDA(ByVal myConnString As String)
>
> Using ts As New TransactionScope()
>
> Using myConnection1 As New DB2Connection(myConnString)
>
> myConnection1.Open()
>
> Dim myCommand As DB2Command =3D myConnection1.CreateCommand()
>
> myCommand.Connection =3D myConnection1
>
> Try
>
> myCommand.CommandText =3D "Insert into rvilocal values (9)"
>
> myCommand.ExecuteNonQuery()
>
> myCommand.CommandText =3D "Insert into rviremota values (9)"
>
> myCommand.ExecuteNonQuery() ' raise the error
>
> myTrans.Commit()
>
> ts.Complete()
>
> Catch e As IfxException
>
> MsgBox(e.Message)
>
> ts.Dispose()
>
> Finally
>
> myConnection1.Close()
>
> End Try
>
> End Using
>
> End Using
>
> End Sub
>
> Please any clues
>
>
>
***************************************************************************=
****
> Forum Note: Use "Reply" to post a response in the discussion forum.
>
Hi Satyan, It works. It means that we can't be use synonyms in informix? It changes the way we programming. Previously, we used Informix IBM Informix .Net provider, with no problems, but it doesn't support LINQ. The IBM DataServer .Net provider is the promise of IBM for LINQ, but the DRDA protocol has serious limitations with Informix. Best regards, Roger
Hi Roger, Glad to know, it is working. . Apparently, Informix native .net driver offer much better stability though it lags in terms of functionality compare to DRDA counterpart. I will pass on the feedback to the management, hope that may help enhancing the native driver further. Regards, Satyan Advisory Software Engineer R&D - IBM Information Management Division 11200 Lakeview, Lenexa, KS 66219 Tel: 913 599 8792 (T/L: 337-8792) ids-bounces@iiug.org wrote on 11/11/2016 03:47:02 PM: > From: "ROGER VILCA" <rvilca@luzdelsur.com.pe> > To: ids@iiug.org > Date: 11/11/2016 03:48 PM > Subject: Re: Issue in transactions with informix using DRDA [38130] > Sent by: ids-bounces@iiug.org > > Hi Satyan, > > It works. > > It means that we can't be use synonyms in informix? > > It changes the way we programming. > > Previously, we used Informix IBM Informix .Net provider, with no problems, > but it doesn't support LINQ. > > The IBM DataServer .Net provider is the promise of IBM for LINQ, butthe DRDA > protocol has serious limitations with Informix. > > Best regards, > Roger > > > ***************************************************************************= **** > Forum Note: Use "Reply" to post a response in the discussion forum. >
Hi, I think that DataServer driver (that means with DRDA protocol) doesn't allow "distributed SQL". That means, the synonyms on remote tables don't work. Best regards, Roger
Hi Roger, Yes, in general usage like dbname@server:table may case problem when it is being used within distributed this distributed transaction. Regards, Satyan Advisory Software Engineer R&D - IBM Information Management Division 11200 Lakeview, Lenexa, KS 66219 Tel: 913 599 8792 (T/L: 337-8792) ids-bounces@iiug.org wrote on 11/14/2016 10:52:29 AM: > From: "ROGER VILCA" <rvilca@luzdelsur.com.pe> > To: ids@iiug.org > Date: 11/14/2016 10:53 AM > Subject: Re: Issue in transactions with informix using DRDA [38142] > Sent by: ids-bounces@iiug.org > > Hi, > > I think that DataServer driver (that means with DRDA protocol) doesn't allow > "distributed SQL". That means, the synonyms on remote tables don't work. > > Best regards, > Roger > > > ***************************************************************************= **** > Forum Note: Use "Reply" to post a response in the discussion forum. >
Hi Roger, Yes, in general usage like dbname@server:table may case problem when it is being used within distributed this distributed transaction. Regards, Satyan Advisory Software Engineer R&D - IBM Information Management Division 11200 Lakeview, Lenexa, KS 66219 Tel: 913 599 8792 (T/L: 337-8792) ids-bounces@iiug.org wrote on 11/14/2016 10:52:29 AM: > From: "ROGER VILCA" <rvilca@luzdelsur.com.pe> > To: ids@iiug.org > Date: 11/14/2016 10:53 AM > Subject: Re: Issue in transactions with informix using DRDA [38142] > Sent by: ids-bounces@iiug.org > > Hi, > > I think that DataServer driver (that means with DRDA protocol) doesn't allow > "distributed SQL". That means, the synonyms on remote tables don't work. > > Best regards, > Roger > > > ***************************************************************************= **** > Forum Note: Use "Reply" to post a response in the discussion forum. >