Salve a tutti,

vorrei implementare una mia classe transazionale per effettuare transazioni misti tra db e fs, ovvero a fronte di una scrittura di un record sua una tabella deve essere copiato un file all'interno di una cartella.
Quello che vorrei fare è avere una specie di transactionscope che permetta la commit solo dopo che entrambe le operazioni siano state eseguite e viceversa effettuare il roolback se una delle due fallisce.

Avete qualche indicazione al riguardo?

Ciao ciao
s.belia wrote:
Avete qualche indicazione al riguardo?

c'è un articolo di ugo sull'argomento
http://www.aspitalia.com/articoli/asp.net2/transazioni.aspx

e so che lui ha fatto un po' di ricerche nell'ambito specifico. aspettiamo che si faccia avanti

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
Ciao Daniele,

l'articolo l'ho visto....ma, benchè scritto bene, parla delle classiche transazioni .

Io sto cercando (se mai ancora ci fosse la possibilità) un aiuto per la creazione di un Transaction misto, ossia che due (o più operazioni) possano scrivere sia su DB che su FS pur restando sotto lo stesso contesto transazionale e se una non va viene effettuato un roolback sia sul DB che su FS.
Così come la commit deve essere fatta dopo che sia stato scritto da entrambe le parti.

Ciao ciao
Ciao!

l'articolo l'ho visto....ma, benchè scritto bene,
Grazie ma non è tutto merito mio


In effetti è un'esigenza che è capitata anche a me in passato e che ho cominciato a risolvere, ma dato che la situazione poi si è evoluta in maniera differente non ho più concluso e approfondito l'argomento. Comunque una possibilità che hai è che all'interno del contesto transazionale del database prima di effetture il commit e effettui la copia dei file nella nuova posizione e nel caso si verifichi un'eccezione puoi effettuare un rollback nel db e cancellare i file su disco, nel caso non si verifichi nulla fai un commit su db e cancelli i file dalla posizione originale.
Ovviamente è solo una ossibile soluzione, l'idea è di riprendere l'argomento e creare un vero e proprio oggetto transazionale misto DB & FS ma non la vedo una cosa a breve termine a causa dei numerosissimi impegni (il post mostra l'orario in cui esco dall'ufficio).
Se mai finirò la cosa la vedrai sicuramente su aspitalia

ciauz

imperugo
Microsoft MVP
myblog : http://www.tostring.it

il post mostra l'orario in cui esco dall'ufficio).

.....beato a te che sei già uscito!!!

Comunque.....grazie della risposta!

Quella che dici tu è una possibile soluzione....ma (c'è sempre un ma) la problematica non è così semplice.
Ti spiego.
In alcuni casi (uno dei più semplici) potrei anche avere la necessità di fare:

--> scrittura su FS
--> scrittura su DB
--> scrittura su FS
--> scrittura su FS
--> scrittura su DB

capisci che in questa situazione la soluzione che hai detto è praticamente inutilizzabile poichè io potrei fare il rollback delle scritture su DB, ma dovrei tenermi da qualche parte tutte le info delle scritture su FS per "rollbackarle".
In ogni caso ormai ho implementato una classe che tiene traccia degli step eseguiti e nel caso di eccezioni viene richiamato un Rollback fittizio che fa le operazioni contrarie all'indietro....

Sicuramente anche io vorrei continuare a portare avanti il progettino di creare questa classe transazionale mista.....e chissà che non venga fuori!?

 Anzi....che ne dici di provarci assieme?

Per concludere comunque c'è da dire che se Microsoft ha ritardato e non di poco il rilascio di WinFS un motivo ci sarà no?
....beato a te che sei già uscito!!!
Non so come sei messo tu ma Io, Ricky e DB siamo messi veramente male.
Comunque.....grazie della risposta!
Non lo sa nessuno ma db mi paga per rispondere

Infatti quella da me non era la soluzione ma un idea di dove porteti appoggiare per iniziare.
In un caso complesso è bene costruirsi un proprio oggetto transazionale che gestisca un contesto molto più vasto come in questa situazione.
Sicuramente anche io vorrei continuare a portare avanti il progettino di creare questa classe transazionale mista.....e chissà che non venga fuori!?
Beh potrebbe uscire una buona roba

 Anzi....che ne dici di provarci assieme?
Ti direi di si, ma come per altri progetti dato l'enorme mole di lavoro in questo periodo potrei del tutto accantonare la cosa.
La mia idea di farla c'è, ma il quando è davvero difficile da immaginare.
Per concludere comunque c'è da dire che se Microsoft ha ritardato e non di poco il rilascio di WinFS un motivo ci sarà no?
Potrebbe sempre uscire prima di quando io finisco di fare il TransactionManager su FS e DB

ciauz

P.S.: Tienimi aggiornato che la roba mi interessa.

imperugo
Microsoft MVP
myblog : http://www.tostring.it
2.410 messaggi dal 13 febbraio 2003
Contributi
ciao a tutti, mi intrometto nella discussione perchè l'argomento è parecchio interessante.

Una soluzione potrebbe essere quella di utilizzare le CLR stored procedure in MSSQL 2005 e quindi integrarle nel contesto transazionale del db.

Unica particolarità per poter accedere a System.IO è necessario impostare su External_Access il code access security del CLR.
bella soluzione.....l'unico inconveniente è che in questo contesto sto parlando di SQL2000

...non dite nulla...il DB l'avevo già trovato e non vogliono passare a 2005 per motivi di costi!!

L'obiettivo in ogni caso (almeno il mio) è quello di creare un sistema transazionale cross-DB.....ma continuiamo la discussione....chissà che non venga fuori qualcosa di "SVOLTANTE"!!!

Ciao a tutti

P.S. Se qualcuno di voi è a Milano il 15 ed il 16 per il corso di Nhibernate ci si può incontrare per scambiare due pareri
Modificato da s.belia il 08 marzo 2007 10.23 -

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.