Unsere Produktionsumgebung, die verwendet NHibernate v3.1.0.4000 plötzlich begann diesen Fehler geben, wenn sie mit Volltextsuche Suche:NHibernate - "GenericADOException: konnte nicht Abfrage ausführen"
[SqlException (0x80131904) : Zeitüberschreitung. Das Zeitlimit ist vor dem Abschluss des Vorgangs abgelaufen oder der Server reagiert nicht.] System.Data.SqlClient.SqlConnection.OnError (SqlException-Ausnahme, Boolean breakConnection) +404 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() + 412 System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand CmdHandler, SqlDataReader Datenstrom, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 1363 System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +59 System.Data.SqlClient. SqlDataReader.get_MetaData() +118 System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) 6.388.257 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBeh avior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +6389826 System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String-Methode, DbAsyncResult result) 538 System.Data.SqlClient.SqlCommand. RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String-Methode) +28 System.Data.SqlClient.SqlCommand.ExecuteReader (CommandBehavior Verhalten, String-Methode) +256 System.Data.SqlClient.SqlCommand.ExecuteDbDataReader (CommandBehavior Verhalten) + 19 System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader() +23 NHibernate.AdoNet.AbstractBatcher.ExecuteReader (IDbCommand cmd) 845 NHibernate.Loader.Loader.GetResultSet (IDbCommand st, Boolean autoDiscoverTypes, Boolean aufrufbar, RowSelection Auswahl, ISessionImplementor Sitzung) +580 NHibernate.Loader.Loader.DoQuery (ISessionImplementor Sitzung, Queryquery, Boolean returnProxies) +275 NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections (ISessionImplementor Sitzung, Queryquery, Boolean returnProxies) +205 NHibernate.Loader.Loader.DoList (ISessionImplementor Sitzung, Queryquery) +195
[GenericADOException: nicht Abfrage [SELECT count (distinct this_.IdDocument) als y0_ VON Document.Document this_ inneren ausführen kann beitreten Document.DocumentCopy documentc1_ on this_.IdDocument = documentc1_.IdDocument WHERE ((@ p0 = @ p1 und enthält (this_.Title, @ p2)) und this_.IsDe leted = @ p3) und (((@ p4 = @ p5 und documentc1_.CreationDate> = @ p6) und documentc1_.CreationDate < = @ p7) und (documentc1_.IdOwnedByGroup = @ p8 oder documentc1_.IdCreatedByGroup = @ p9)]] Positionsparameter: # 0> 0 # 1> 0 # 2> "ýÿýÿýÿýÿýÿýÿýÿýÿ *" # 3> Falsch # 4> 0 # 5> 0 # 6> 12/5/2015 12:00:00 ýÿýÿ # 7> 12/5/2016 11:59:00 ýÿýÿ # 8> 1 # 9> 1 [SQL: SELECT-Zähler (distinct this_.IdDocument) als y0_ FROM Document.Document this_ innerer Join Document.DocumentCopy documentc1_ on this_.IdDocument = documentc1_.IdDocument WHERE ((@ p0 = @ p1 und enthält (this_.Title, @ p2)) und this_.IsDeleted = @ p3) und (((@ p4 = @ p5 und documentc1_.CreationDate> = @ p6) und documentc1_.CreationDate < = @ p7) und (documentc1_.IdOwnedByGroup = @ p8 oder documentc1_.IdCreatedByGroup = @ p9))]] NHibernate.Loader.Loader.DoList (ISessionImplementor-Sitzung, QueryParameters queryParame ters) 637 NHibernate.Loader.Loader.ListIgnoreQueryCache (ISessionImplementor Sitzung, Queryquery) +23 NHibernate.Loader.Criteria.CriteriaLoader.List (ISessionImplementor Sitzung) +60 NHibernate.Impl.SessionImpl.List (CriteriaImpl Kriterien, IList Ergebnisse) +1025 NHibernate.Impl.CriteriaImpl.List (IList Treffer) +63 NHibernate.Impl.CriteriaImpl.UniqueResult() +57 Domain.Repositories.DocumentRepository.Domain.Abstract.IDocumentRepository.GetAll (Kriterien
1 criteria, Int32& count, Dictionary
2 openFieldCriteria) 272 ServicesImplementation.DocumentService.GetDocuments (Kriterien1 criteria, Int32& count, String metadataSearchTerm) +510 Docman.Models.List.ListModel.GetDocuments(Int32& count) +102 ASP._Page_Views_List_Index_cshtml.Execute() in d:\wwwroot\inetpub\docman\Views\List\Index.cshtml:27 System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +280 System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +104 System.Web.WebPages.StartPage.ExecutePageHierarchy() +143 System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +157 System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +384 System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +33 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func
1 Fortsetzung) 826.372 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters (Controllercontroller, IList`1 Filter, action~~POS=TRUNC action~~POS=TRUNC) +265 System.Web.Mvc.ControllerActionInvoker.InvokeAction (Controllercontroller, String action) 827.248 -System .Web.Mvc.Controller.ExecuteCore() +159 System.Web.Mvc.ControllerBase.Execute (RequestContext requestContext) +335 System.Web.M vc. <> c__DisplayClassb.b__5() +62 System.Web.Mvc.Async. <> c__DisplayClass1.b__0() +20 System.Web.Mvc. <> c__DisplayClasse.b__d() +54 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 469 System.Web.HttpApplication.ExecuteStep (IExecutionStep Schritt, Boolean & completedSynchronously) +375
Ich habe versucht, die oben aufgeführte Abfrage auf SSMS und es lief gut und schnell.
Ein ähnlicher Fehler wird hier erwähnt: , obwohl meine Fehlermeldung keine IndexOutOfRangeException
darin enthält.
Kann mir jemand sagen, was könnte die Ursache dafür sein?
UPDATE:
Weitere Informationen:
Wir verwenden Projektionen.
Nach dem Fehlerprotokoll stammt der Fehler von einer Abfrage, die nur eine Anzahl und nicht viele Zeilen mit vielen Feldern zurückgibt.
Wie ich bereits sagte, die gleiche Abfrage (im Fehlerprotokoll aufgeführt) läuft schnell und ohne Probleme, wenn ich es von SSMS ausführen. Alle Abfragen, die von der Anwendung ausgeführt werden, die diese SQL-Abfrage ausführt, scheinen jedoch mit dem obigen Fehler fehlzuschlagen.
Der Code ist möglicherweise nicht klar für Sie, da wir einen benutzerdefinierten Wrapper für NH verwenden.
Ich denke, ich bin falsch in der Reihenfolge der Ausnahmen und zuerst die Zeitüberschreitung passiert und dann meldet der ADO.net den anderen Fehler. So , ich denke, es ist ein Timeout, nachdem alle ...
UPDATE 2:
Nach etwas mehr Forschung, es scheint zu diesem Thema bezieht und die Abfrage in der Tat ist das Timing aus, nur nicht von SSMS:
Query times out when executed from web, but super-fast when executed from SSMS
Die datails sagt, ist Timeout Problem. – Najera
Wie viel Daten bringen Sie zurück? Wie sieht der Code aus, der das macht? nimmst du Projektionen? – Fran
@Najera Wenn Sie unter diese erste Ausnahme schauen, gibt es eine weitere Ausnahme, die die innere Ausnahme zu sein scheint. – user2173353