Bonjour,
je travaille avec VS2005, et les Enterprise Library 3.1.
Je cherche à effectuer une transaction qui comporte plusieurs insertions en base spatiale.
Tout se passe généralement bien... sauf pour certaines insertions, qui se révèlent être plutôt longue.
Les insertions sont du type Insert into table select ...
Ces insertions mettent environs 15 minutes à s'effectuer avec Toad, mais mettent plus d'une heure à s'effectuer par code.
Le problème du temps d'exécution n'en serait pas un si la transaction allait jusqu'au bout, mais malheureusement ce n'est pas le cas : au bout de 40 mn environ (c'est variable), la commande lève une exception :
C'est assez incompréhensible, mis à part le temps d'exécution :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 System.Data.OracleClient.OracleConnection.GetOpenInternalConnection() à System.Data.OracleClient.OracleConnection.get_ErrorHandle() à System.Data.OracleClient.OracleCommand.ExecuteNonQueryInternal(Boolean needRowid, OciRowidDescriptor& rowidDescriptor) à System.Data.OracleClient.OracleCommand.ExecuteNonQuery() à Microsoft.Practices.EnterpriseLibrary.Data.Database.DoExecuteNonQuery(DbCommand command) à Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteNonQuery(DbCommand command)
- ma transaction est réglée sur 2 h :
- J'ai essayé de mettre un timeout sur l'exécution de la commande sans succès...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Dim options As New Transactions.TransactionOptions() options.Timeout = New TimeSpan(2, 0, 0) Dim transaction As New Transactions.TransactionScope(Transactions.TransactionScopeOption.Required, options) Using transaction
- j'ai essayé de modifier les enterprise library en utilisant le provider ODP, mais sans résultat, je n'arrive pas à compiler la solution... (problème sur le OracleClientFactory)
avez-vous déjà été confronté à ce genre de problème ?
puis-je selon vous encore caresser l'espoir de trouver une solution ??
Merci de votre aide !
Partager