2 messaggi dal 18 maggio 2010
Ciao,

dalla mia pagina aspx richiamo una procedura di importazione di un file di testo in un database.
La procedura d'importazione lavora all'interno di un transaction scope; subito prima di uscire dallo scope viene invocato il metodo scope.Complete(); se si scatena un'eccezione di qualsiasi tipo il complete non viene invocato e non si ha quindi persistenza dei dati, come è giusto che sia.
All'interno della stessa procedura però viene scritta anche una tabella contenente delle informazioni di log e queste scritture non devono essere sotto transazione perchè altrimenti in caso di rollback non verrebbe registrato niente in questa tabella e di conseguenza non si potrebbe capire il motivo per cui l'importazione non è andata a buon fine.
Io per realizzare questo utilizzo degli scope nidificati con TransactionScopeOption.Suppress perchè voglio che la tabella di log sia scritta sempre; mi sono accorto che la cosa funziona soltanto se utilizzo due connessioni distinte al db, una per l'importazione ed un'altra per latabella di log.
Mi piacerebbe utilizzare una sola connessione al db perchè alla fine la procedura è unica e non ha molto senso utilizzare due connessioni, ma dalle prove fatte non sembra possibile, qualcuno ha avuto esperienze simili ?

Paghe
IMHO è corretto usare una connessione diversa per gestire il log.
In generale il log è un processo "parallelo" ed è un errore considerarlo parte del task principale. Un isolamento di questo tipo ti consente inoltre un rapido cambio dei requisiti (ad esempio un domani il log potrebbe persistere da un'altra parte: un diverso db, file system, windows events, ecc.)
My two cents.

Matteo Casati
GURU4.net
2 messaggi dal 18 maggio 2010
Condivido le tue considerazioni, considera però che se n utenti eseguono la stessa procedura contemporaneamente, si impegnano n x 2 connessioni al db; questo potrebbe essere limitativo alla luce anche del fatto che l'esecuzione della procedura può durare anche parecchi minuti.
Per questo motivo avrei preferito che la stessa connessione o una diversa connessione per il log fosse una scelta del programmatore.

Ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.