15 messaggi dal 10 marzo 2010
Buongiorno a tutti,

mi sono accorta che la mia pagina web di dettaglio dei miei prodotti mi da' saltuariamente errore di timeout su una query di aggiornamento del mio db. Saltuariamente nel senso che non me lo da' per tutti i prodotti... Questo e' il codice:

    'Recupero il dato delle visualizzazioni precedenti e il codice ufficio
        sql = "select NumVisualizzazioni, ufficio from faldone where codice=" & codice
        Response.Write(sql & "<br>")
        Dim gestdb As New DBgest
        gestdb.sql = sql
        Dim dati = gestdb.apridati()
        dati.Read()
        Dim visual = dati("NumVisualizzazioni")
        Dim ufficio = dati("ufficio")
        'Inizializzo a 0 se l'articolo è nuovo
        If visual Is DBNull.Value Then visual = 0
        visual = visual + 1
        ' Aggiorno il DB
        sql = "update faldone set NumVisualizzazioni=" & visual & " where codice=" & codice
        gestdb.sql = sql
        Response.Write(sql)
        gestdb.esegui()  REM questa è la query che dà problemi

Nello specifico un esempio di due query:

select NumVisualizzazioni, ufficio from faldone where codice=293050

update faldone set NumVisualizzazioni=11 where codice=293050

La seconda e' quella che mi da' problemi; NumVisualizzazioni e' di tipo Integer

Il codice e' univoco, quindi sia la select che l'update operano su di un solo record.

Questo e' l'errore completo:
Riga 115: cmd.CommandType = CommandType.Text
Riga 116: cmd.Connection = cn
Riga 117: nraffected = cmd.ExecuteNonQuery()
Riga 118: Return nraffected
Riga 119: End Function

File di origine: G:\siti\sitonew\App_Code\Class1.vb Riga: 117 

Analisi dello stack: 


[SqlException (0x80131904): Timeout. Il tempo disponibile è scaduto prima del completamento dell'operazione o il server non risponde.]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +1950522
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4856715
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +1121
System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) +192
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) +317
System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +137
DBgest.esegui() in G:\siti\sitonew\App_Code\Class1.vb:117
ricercascheda.incrementa_visualizzazioni() in G:\siti\sitonew\new\ricercascheda.aspx.vb:58
ricercascheda.Page_Load(Object sender, EventArgs e) in G:\siti\sitonew\new\ricercascheda.aspx.vb:313
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627



Non riesco proprio a capire perche' si verifichi questo problema e tanto meno perche' succeda solo in alcuni casi...

Grazie in anticipo
184 messaggi dal 22 giugno 2008
Io credo che ci siano dei problemi in quella classe DBgest. E'possibile che il metodo che esegue la select abbia il riferimento di una connection string ed il metodo che esegue l'update ne abbia un altro... te lo dico perchè a giuticare dallo stack sembra che tu abbia copiato ed incollato il codice di quella classe da un post di un forum... siccome a me sembra fatta abbastnza male, ti suggerisco di ottimizzarne il codice (se non di riscriverla da 0)
Modificato da deckman il 01 ottobre 2012 10.47 -

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.