Nous avons une erreur très étrange: parfois nous obtenons cette erreur lorsque nous voulons sauvegarder quelque chose de notre service WCF. L'objet que nous sauvegardons ne contient AUCUNE date-heure invalide, nous les vérifions tous avant de sauvegarder. Lorsque nous voyons cette erreur, la base de données se bloque parfois et le WCF est dans un état défectueux. Lorsque je redémarre la base de données DB et l'application Web IIS où le WCF est hébergé et réessayez d'enregistrer. Il fonctionne .. Nous sommes désemparés donc si quelqu'un a des conseils, s'il vous plaît partagerDébordement SQLDateTime incohérent avec NHibernate
Après l'erreur:
2010-03-05 10: 21: 34311 [5] ERREUR ProjectX.Business.TTExceptionLogger - Exception quelque part dans ReceiveResultsForMobile(): {0} Castle.Services.Transaction.CommitResourceException: Impossible de valider la transaction, une (ou plusieurs) des ressources a échoué ---> System.Data.SqlTypes.SqlTypeException: dépassement SqlDateTime. Doit être compris entre 1/1/1753 12:00:00 AM et 31/12/9999 23:59:59. à System.Data.SqlTypes.SqlDateTime.FromTimeSpan (valeur TimeSpan) à System.Data.SqlTypes.SqlDateTime.FromDateTime (valeur DateTime) à System.Data.SqlClient.MetaType.FromDateTime (DateTime dateTime, Byte cb) à System.Data.SqlClient.TdsParser.WriteValue (valeur d'objet, type MetaType, échelle Byte, Int32 actualLength, Int32 encodingByteSize, décalage Int32, TdsParserStateObject stateObj) à System.Data.SqlClient.TdsParser.TdsExecuteRPC (_SqlRPC [] rpcArray, Int32 timeout , Boolean inSchema, SqlNotificationRequest NotificationRequest, TdsParserStateObject stateObj, Boolean isCommandProc) à System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, runBehavior runBehavior, Boolean returnStream, async Boolean) à System.Data.SqlClient.SqlCommand.RunExecuteRe ader (CommandBehavior cmdBehavior, runBehavior RunBehavior, Boolean returnStream, méthode String, résultat DbAsyncResult) à System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (résultat de DbAsyncResult, String methodName, Boolean sendToPipe) à System.Data.SqlClient.SqlCommand.ExecuteNonQuery () à NHibernate.AdoNet.AbstractBatcher.ExecuteNonQuery (IDbCommand cmd) à NHibernate.AdoNet.NonBatchingBatcher.AddToBatch (attente de IExpectation) à NHibernate.Persister.Entity.AbstractEntityPersister.Update (id Object, Object [] champs, Object [] oldFields, Object rowId, Boolean [] includeProperty, Int32 j, Objet oldVersion, Objet obj, SqlCommandInfo sql, Session ISessionImplementor) à NHibernate.Persister.Entity.AbstractEntityPersister.UpdateOrInsert (Object id, Object [] fields, Object [] oldFields, Row de l'objet d, Boolean [] includeProperty, Int32 j, Objet oldVersion, Objet obj, SqlCommandInfo sql, Session ISessionImplementor) à NHibernate.Persister.Entity.AbstractEntityPersister.Update (Object id, Object [] champs, Int32 [] dirtyFields, Boolean hasDirtyCollection, Object [] Oldfields, objet ancienneversion, objet obj, objet rowId, séance ISessionImplementor) à NHibernate.Action.EntityUpdateAction.Execute() à NHibernate.Engine.ActionQueue.Execute (executable IExecutable) à NHibernate.Engine.ActionQueue.ExecuteActions (liste IList) à NHibernate.Engine.ActionQueue.ExecuteActions() à NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecutions (séance IEventSource) à NHibernate.Event.Default.DefaultFlushEventListener.OnFlush (événement FlushEvent) à NHibernate.Impl.SessionImpl.Flush() à NHibernate.Transaction.AdoTransaction.Commit() à Rhino.Commons.NHibernateTransactionAdapter.Commit() à Rhino.Commons.Facilities.RhinoTransactionResourceAdapter.Commit() au château. Services.Transaction.AbstractTransaction.Commit() --- Fin de la trace de pile d'exception interne --- à Castle.Services.Transaction.AbstractTransaction.Commit() à Castle.Services.Transaction.StandardTransaction.Commit() à Castle.Facilities.AutomaticTransactionManagement.TransactionInterceptor.Intercept (invocation de IInvocation) à Castle.DynamicProxy.AbstractInvocation.Proceed() à IReceiveServiceProxy61c28a82c9a24e96957e32292b924889.Save (réception par exemple) à WcfInterfaceService.MobileServices.SaveReceiveLines (IEnumerable 1 receiveLines, String warehouseCode, String username, String deviceNumber, Boolean removeOldReceiveLines) in D:\Project Docs\Clients\ClientX 09.08\Projects\ProjectX\ProjectX.WcfInterfaceService\MobileServices.svc.cs:line 567 at WcfInterfaceService.MobileServices.ProcessReceiveResults(List
1 receiveLines , String warehouseCode, String nom d'utilisateur, String deviceNumber) dans D: \ Project Docs \ Clients \ ClientX 09.08 \ Projects \ ProjectX \ ProjectX.WcfInterfaceService \ MobileServices.svc.cs: ligne 770 à WcfInterfaceService.MobileServices.ProcessResultsFromMobile (Chaîne receiveResult, Chaîne warehouseCode, String username, String deviceNumber) dans D: \ Project Docs \ Clients \ ClientX 09.08 \ Projects \ ProjectX \ ProjectX.WcfInterfaceService \ MobileServices.svc.cs: ligne 668
La base de données est un MSSQL 2005 Les données à l'origine de l'exception sont difficiles à dire. Il apparaît avec deux méthodes, mais lorsque nous inspectons les dates dans l'objet, elles contiennent toutes une date valide. Nous modifions maintenant les types de date à datetime au lieu de smalldatetime. Le problème est que le problème se produit parfois, pas toujours – Sven
Avec quel genre de date, je veux dire quelle est la valeur de la date provoquant l'exception, comme 3/8/2009 – Paco
Nous avons trouvé ce qui n'allait pas Quelque part une propriété (datatime) n'a pas été défini correctement, cela a provoqué le débordement de date/heure – Sven