NHibernate error accessing Informix database - 网络功能发生系统错误

NHibernate error accessing Informix database - System error occurred in network function

我在使用 NHibernate 与 Informix 数据库通信时遇到问题,在有限的时间内有效,但过了那个特定的时间就会发生错误。

遵循以下证据:

NHibernate.TransactionException: Begin failed with SQL exception ---> IBM.Data.Informix.IfxException: ERROR [08S01] [Informix .NET provider]Communication link failure.
   em IBM.Data.Informix.IfxConnection.BeginTransactionObject(IsolationLevel isolevel)
   em IBM.Data.Informix.IfxConnection.BeginTransaction(IsolationLevel isolevel)
   em IBM.Data.Informix.IfxConnection.System.Data.IDbConnection.BeginTransaction(IsolationLevel isolevel)
   em NHibernate.Transaction.AdoTransaction.Begin(IsolationLevel isolationLevel)
   --- Fim do rastreamento de pilha de exceções internas ---
   em NHibernate.Transaction.AdoTransaction.Begin(IsolationLevel isolationLevel)
   em NHibernate.Transaction.AdoTransaction.Begin()
   em NHibernate.Impl.SessionImpl.BeginTransaction()

NHibernate.TransactionException: Begin failed with SQL exception ---> IBM.Data.Informix.IfxException: ERROR [HY000] [Informix .NET provider][Informix]System error occurred in network function. 
   em IBM.Data.Informix.DBCWrapper..ctor(IfxConnection connection)
   em IBM.Data.Informix.IfxConnectionPool.IfxConnPoolNode..ctor(IfxConnection connection)
   em IBM.Data.Informix.IfxConnectionPool.OpenNewConnection(IfxConnection connection, ConnectionPoolType ConnPoolType)
   em IBM.Data.Informix.IfxConnectionPool.Open(IfxConnection connection)
   em IBM.Data.Informix.IfxConnPoolManager.Open(IfxConnection connection)
   em IBM.Data.Informix.IfxConnection.Open()
   em NHibernate.Connection.DriverConnectionProvider.GetConnection()
   em NHibernate.AdoNet.ConnectionManager.GetConnection()
   em NHibernate.Impl.SessionImpl.get_Connection()
   em NHibernate.Transaction.AdoTransaction.Begin(IsolationLevel isolationLevel)
   --- Fim do rastreamento de pilha de exceções internas ---
   em NHibernate.Transaction.AdoTransaction.Begin(IsolationLevel isolationLevel)
   em NHibernate.Transaction.AdoTransaction.Begin()
   em NHibernate.Impl.SessionImpl.BeginTransaction()
   em nddConnect.Client.EntryDocumentsComponent.NHibernate.Context.NHibernateSessionManager.Invoke(IMethodInvocation input, GetNextInterceptionBehaviorDelegate getNext)
   em Microsoft.Practices.Unity.InterceptionExtension.InterceptionBehaviorPipeline.Invoke(IMethodInvocation input, InvokeInterceptionBehaviorDelegate target)
   em DynamicModule.ns.Wrapped_IComponentFacade_b83011052f234f2b9e18ae4d34bd90cc.CaptureJobConfig(IDictionary`2 dicEntryConfigJob)
   em Connect.Client.EntryDocumentsComponent.Controller.EntryJobController.GetJob(Guid transportActionGuid); 

我尝试了各种方法来模拟错误,但都没有用。

我认为这可能是数据库在部分 "stuck" 中出现延迟。

有人可以帮我吗?

您可以使用 DB2 Entity Framework 驱动程序连接 Informix 服务器。 (使用 Informix 本机 .NET 驱动程序不支持 Entity Framework) (在 IDS 服务器上,您可能需要配置 DRDA 端口以使用 DB2 EF 驱动程序) 通过使用此驱动程序,您将能够使用 LINQ 命令。 LINQ 是 NHibernate 的替代品之一。

在研究客户环境和日志后发现错误是由于在某个时间表中完成备份导致银行不稳定导致连接错误,之后应用程序无法正常运行需要重启(服务),感谢帮助