Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Richiamo stored lunga
mercoledì 23 febbraio 2011 - 17.39
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
C#
|
.NET 2.0
|
Visual Studio 2008
|
Oracle 10g
paglio
Profilo
| Newbie
5
messaggi | Data Invio:
mer 23 feb 2011 - 17:39
Ciao a tutti
sto richiamando da codice una stored procedures che dura parecchio tempo (fino a 2 ore), utilizzando il comando
conn.Open();
..
cmd.ExecuteNonQuery();
..
conn.Close();
Il mio obiettivo è quello di poter subito rientrare nella pagina (tramite menu), mentre ora per qualche minuto la pagina rimane bloccata.
Oltretutto uscendo forzatamente dalla pagina la connessione non si chiude.
Come posso ovviare a questi problemi?
Grazie
Lorenzo
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 23 feb 2011 - 17:47
>Ciao a tutti
Ciao
>sto richiamando da codice una stored procedures che dura parecchio
>tempo (fino a 2 ore), utilizzando il comando
oddio mio.. è veramente un tempo lunghissimo! Ma sei sicuro che la stored procedure sia lo strumento più indicato? E' ottimizzata? Davvero due ore sono troppe, per qualunque elaborazione..
Che ne dici di parlarci della situazione reale per capire se è possibile trovare una tecnica/tecnologia migliore?
>Il mio obiettivo è quello di poter subito rientrare nella pagina
>(tramite menu), mentre ora per qualche minuto la pagina rimane
>bloccata.
Devi cambiare approccio, di sicuro non puoi permetterti di eseguire così in sincrono.
O fai un processo separato ma via web rischi di perderti sul server, oppure penserei di scrivere un servizio che gira sul server ed effettua le operazioni. Di sicuro non farei il tutto appeso ad una connessione sul web server.
>Oltretutto uscendo forzatamente dalla pagina la connessione non si chiude.
E dopo poco il server ti dice "busy" se hai un numero di utenti che ti aprono n connessioni.
Cerchiamo di cambiare approccio.. ma prima dobbiamo capire la situazione reale.
>Grazie
di nulla!
--
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
paglio
Profilo
| Newbie
5
messaggi | Data Invio:
gio 24 feb 2011 - 08:26
grazie per la risposta. La stored non è stata creata da me, mi sono chiesto anch'io se non sia possibile ottimizzarla ma non è un lavoro che posso fare adesso.. ora dovrei trovare, se possibile, un modo di far funzionare il tutto: richiamare la Stored da una pagina web, ed avere la possibilità di rientrare nella pagina. Fosse una chiamata asincrona andrebbe benissimo (ma non so se e come si possa fare).
il problema del 'busy' non dovrebbe sussistere, nel senso che fino al termine dell'elaborazione non permetto un ulteriore richiamo (tramite una tabella di log posso vedere se la SP sta ancora giando o se ha terminato), ma vorrei riuscire almeno a dare un messaggio di impossibilità a procedere.
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
lun 28 feb 2011 - 22:33
>grazie per la risposta. La stored non è stata creata da me, mi
>sono chiesto anch'io se non sia possibile ottimizzarla ma non
>è un lavoro che posso fare adesso.. ora dovrei trovare, se possibile,
>un modo di far funzionare il tutto: richiamare la Stored da una
>pagina web, ed avere la possibilità di rientrare nella pagina.
>Fosse una chiamata asincrona andrebbe benissimo (ma non so se
>e come si possa fare).
Per fare la chiamata asincrona puoi usare javascript. Se hai visual studio puoi sfruttare l'ajax toolkit di MS oppure usare un framework javascript e utilizzare le sue API per fare la chiamata asincrona. Ad esempio, con jQuery, puoi usare il metodo $.post:
http://api.jquery.com/jQuery.post/
Ogni tanto refreshi un pannello con una simil progress bar che ti dice a che punto sei con l'esecuzione della sp (se hai le politiche per capire a che punto è, come il tuo log della sp)
>il problema del 'busy' non dovrebbe sussistere, nel senso che
>fino al termine dell'elaborazione non permetto un ulteriore richiamo
>(tramite una tabella di log posso vedere se la SP sta ancora
>giando o se ha terminato), ma vorrei riuscire almeno a dare un
>messaggio di impossibilità a procedere.
In tal caso, potresti dare una callback ogni volta che leggi lo stato della suddetta progress bar rendendo nascosto a server il pulsante di esecuzione. E solo quando la sp ha finito, rimostrarlo. In tutto questo noterai che serve una sorta di polling lato client.
--
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
Torna su
Stanze Forum
Elenco Threads
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 !