Differenza tra System.Data.SqlClient.SqlTransaction e System.Transacti...

lunedì 19 gennaio 2015 - 16.56
Tag Elenco Tags  VB.NET  |  SQL Server 2008 R2

trinity Profilo | Guru

Salve ragazzi mi sorge un dubbio.
io di solito in vb net per scrivere o eliminare o leggere dei dati da un dp uso sempre la sintassi TransactionScope per esempio:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

ho visto che la classe sqlclient ha la sua transaction pertanto dato che io comunque essendo dei dati che vengono gestiti da + terminali contemporaneamente e quindi soggetti ad modifiche mi potete dire se per fare delle transazioni basti utilizzare il codice sopra scritto oppure dovrei utilizzare al classe transaction di sql?

tipo questa?

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

spiegatemi please :)

ciao e grazie
Cirillo Fabio
www.trycontact.com
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>Salve ragazzi mi sorge un dubbio.
ciao

Come prima cosa, non c'è una regola fissa, dipende da quello che devi fare tu. E non è nemmeno detto che in realtà la transazione ti serva sempre. Anzi, a volte ti bastano le transazioni implicite che SQL Server applica ai comandi.
TransactionScope è un oggetto che consente di sottoporre una porzione di codice sotto transazione, senza doverla gestire (rollback impliciti) e senza per forza specificare la transazione (e quindi senza dover scegliere la piattaforma su cui aprirla e committarla). La sql transaction è il classico oggetto di gestione di una transazione SQL Server, quindi è orientata alla piattaforma e totalmente personalizzabile (consente di fare i vari BEGIN TRAN, ROLLBACK TRAN, COMMIT TRAN e via discorrendo).
Con il TransactionScope poi è piuttosto semplice gestire anche transazioni distribuite.

>ho visto che la classe sqlclient ha la sua transaction pertanto
>dato che io comunque essendo dei dati che vengono gestiti da
>+ terminali contemporaneamente e quindi soggetti ad modifiche
>mi potete dire se per fare delle transazioni basti utilizzare
>il codice sopra scritto oppure dovrei utilizzare al classe transaction di sql?
Come ti dicevo sopra, è dipendente da quanto tu devi fare in transazione. I processi che mandi al server, sono comunque isolati e quindi, tra loro, non si pestano i piedi. Il fatto che vi siano più modifiche non significa che per forza ti servono transazioni esplicite, visto che i comandi già hanno il loro isolamento.

>ciao e grazie
di nulla!
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/en-us/mvp/Alessandro%20Alpi-4014222

trinity Profilo | Guru

Pertanto mi consigli di usare normalmente il TransactionScope dato che alla fine eseguo delle semplice query di insert,delete e select

ciao

Cirillo Fabio
www.trycontact.com
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>Pertanto mi consigli di usare normalmente il TransactionScope
>dato che alla fine eseguo delle semplice query di insert,delete e select
no, ti consiglio di capire se ti serve veramente una transazione
E, soprattutto per le select, direi che sarebbe da evitare, visto che di default l'isolation level imposto dal TransactionScope è serializable (ovvero il più pesante).
Non c'è una regola fondamentale, devi capire il flusso dei comandi che lanci e determinare se hai bisogno di transazioni o meno.
Per una select, a meno che non debba bloccare le risorse, di solito un READ COMMITTED è più che sufficiente.
Una volta capito questo, poi puoi utilizzare entrambi (dipende ancora una volta dalle tue esigenze), ma il transaction scope è sicuramente molto più comodo.
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/en-us/mvp/Alessandro%20Alpi-4014222
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5