Ошибка NHibernate при доступе к базе данных Informix - в сетевой функции произошла системная ошибка
У меня проблема с обменом данными с базой данных Informix с помощью NHibernate, в течение ограниченного времени работает, но прошло определенное время, когда происходит ошибка.
Следуйте доказательствам ниже:
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);
Я пробовал разные методы для симуляции ошибки, но все безрезультатно.
Я думаю, что это возможная задержка в базе данных после того, как что-то застряло в разделе.
Может ли кто-нибудь помочь мне?
2 ответа
После изучения клиентской среды и журналов было обнаружено, что ошибка произошла из-за завершения резервного копирования по определенному графику, что вызвало нестабильность в банке, что привело к ошибке подключения, и после этого приложение не работает должным образом, необходимо перезапустить (сервис), благодарен за помощь
Вы можете использовать драйвер DB2 Entity Framework для подключения к серверу Informix. (Нет поддержки Entity Framework с использованием встроенного драйвера.NET Informix) (На сервере IDS может потребоваться настроить порт DRDA для использования драйвера DB2 EF) Используя этот драйвер, вы сможете использовать команды LINQ. LINQ является одним из альтернатив для NHibernate.