Connessioni sql server

mercoledì 13 maggio 2009 - 17.41

rstella Profilo | Newbie

Buon giorno a tutti.
Io avrei un problema sono alle prese con un Web service e con Sql 2005.
Allora io ho la necessita che per oghi utente che sicollega al WebService, si apra una connessione a sql 2000 e che resti aperta fino a quando l'untente non si disconnette.
Fino ad ora io istanzio la connessione al new della pagina asmx, purtroppo questo vuol dire che ogni volta che un utente chiama un metodo istanzia una nuova connessione.
Mettendo la connessione statica, miapre una sola connessione per tutti gli utenti e ho il proplema che più utenti mi aprono oggetti reader contemporaneamente e quindi mi va in errore d
di reader gia aperto per quella connessione.
Qualcuno può aiutarmi????
Ringrazio tutti anticipatamente.
Stella Renato

Jeremy Profilo | Guru

Ciao Renato.
Per aiutarti bisognerebbe capire bene lo scenario, secondo me, la soluzione migliore sarebbe quella di lavorare in modalità disconnessa rispetto al database e quindi non usare un datareader ma piuttosto appoggiarsi ad un dataset.
Puoi spiegare un pò meglio lo scenario?

Facci sapere...
Ciao

rstella Profilo | Newbie

Ciao.
Inanzitutto grazie per l'interessamento.
Lo scenario è semplice, ci sono tanti client che richiamano metodi da un web service per reperire dati dal database.
Purtroppo Molti metodi del web Service aprono un datareader. Il problema è che avendo la connsseione statica nel
Web Service capita ogni tanto che i client si trovino ad aprire contemporaneamente il reader mentre un altro reader ha
ancora da fare il close, e ovviamente va in errore.
Purtroppo sono su sql 2000 , quindi non posso usare la tecnoligia MARS di sql2005 che mi risolverebbe il problema.
Instanziando la connessione a livello di pagina del web service non è che mi piaccia perchè mi creerebbe una nuova connessione
ogni volta che chiamo un metodo web.
Se uso il DataAdapter per lavorare sconnesso al server ciò non mi risolve del tutto il problema, perchè se due client chiamano
contemporaneamente il metodo il dataadapter si comporta come il reader.
Spero di essere stato chiaro.
Apprezzo ogni sforzo per aiutarmi.
Stella Renato

Jeremy Profilo | Guru

Ciao Renato
>Se uso il DataAdapter per lavorare sconnesso al server ciò non
>mi risolve del tutto il problema, perchè se due client chiamano
>contemporaneamente il metodo il dataadapter si comporta come
>il reader.
Il fatto di lavorare disconnesso potrebbe essere una soluzione in quanto, una volta popolato un dataset, puoi gestire i dati, contenuti al suo interno, per tutto il tempo che vuoi.
nel frattempo, chiunque può accedere al database.
Nel caso in cui 2 client tentino di accedere al database, puoi gestire l'eccezione che verrebbe sollevata e riprovare un x tempo dopo.
Qualcosa tipo questo:

dim tempo as new random wait: try dataadapter.fill(dataset) catch ex as exception threading.thread.sleep(tempo.next) goto wait end try


il codice che ti ho scritto sopra l'ho scritto al volo, quindi, potrebbe esserci qualche errore, dagli un occhio anche tu.
Potresti usarlo anche per mantenere il discorso del datareader.


Facci sapere...
Ciao

rstella Profilo | Newbie

Ciao grazie per la risposta.
Questo tipo disoluzione la avevo gia pensata ma la tenevo come ultima soluzione.
Comunque prevedo di fare come dici tu
"taglio la testa al toro"
Grazie di tutto ciao.
Stella Renato
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