Transazioni automatiche

lunedì 07 maggio 2012 - 16.57

slavishdany Profilo | Newbie

Buongiorno a tutti,
vorrei sottoporvi un problema.
In un ciclo faccio due query e sql server va in errori dicendomi di non poter aprire un'altra connessione a causa delle transazioni automatiche.
Gli strumenti che utilizzo sono Asp.net 2.0 con fw 3.5 e linguaggio vb. DB :SQL server 2008 R2 versione 10.5.
Vi posto anche il codice in questione


dim w_conn as new oledbconnection(stringa di connessione)
dim w_trans as oledbtransaction
w_conn.open
w_trans= w_conn.BeginTransaction
w_comm as new oledbcommand("SELECT * FROM tab where stato=1",w_conn,w_trans)
dim w_read as oledbdatareader = w_comm.executereader
if w_read.hasrows then
while w_read.read
w_comm2 = new oledbcommand(select * from tab2 where id = '"& w_read("id") &"'",w_conn,w_trans)
w_read2 = w_comm2.executereader
if w_read2.hasrows then
while w_read2.read
response.write(w_read2("nome"))
end while
end if
w_read2.close()
end while
end if


Il codice non è quello effettivo perchè quello effettivo ha delle query molto più lunghe.
Comunque l'errore lo da quando cerco di eseguire la seconda query .
La cosa strana e che con non ha mai dato questo errore.
Vi ringrazio in anticipo per l'aiuto
Danilo



P.s. l'errore che mi da è il seguente :
Impossibile creare una nuova connessione perché in modalità di transazione manuale o automatica.

alx_81 Profilo | Guru

>Buongiorno a tutti,
Ciao

>Gli strumenti che utilizzo sono Asp.net 2.0 con fw 3.5 e linguaggio
>vb. DB :SQL server 2008 R2 versione 10.5.
ti consiglio di utilizzare il TransactionScope: http://msdn.microsoft.com/it-it/library/system.transactions.transactionscope(v=vs.90).aspx

vedrai che ti troverai benissimo.
In poche parole tu passi una transazione e "lui" ti mantiene in quel contesto le tue N istruzioni.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

slavishdany Profilo | Newbie

grazie mille, ho risolto alla fine ieri poco dopo aver postato il problema, ho aperto un'altra connessione e tolto la transazione dalla seconda query, chiudo la connessione subito dopo la query e per ora funziona. Appena avrò un po' più di tempo proverò la classe che mi hai consigliato .
Grazie :)
Danilo

alx_81 Profilo | Guru

>grazie mille, ho risolto alla fine ieri poco dopo aver postato
>il problema, ho aperto un'altra connessione e tolto la transazione
>dalla seconda query, chiudo la connessione subito dopo la query
>e per ora funziona. Appena avrò un po' più di tempo proverò la
>classe che mi hai consigliato .
Credimi, fallo quanto prima perchè è proprio una best practice in questi casi.

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5