Ciao tutti,
oggi ho scoperto che la query
"SELECT numerofatt FROM fatture ORDER BY numerofatt DESC"
eseguita su un DB access mi faceva inchiodare IIS (sia la versione 6 W2003 che la 7 W2008).
Controllando dal performance monitor, vedevo crescere il numero Totale Utenti Anonimi e di conseguenza delle richieste in coda fino ad arrivare a rendere il sito irraggiungibile.
La query di per se eseguita in access ovviamente non crea alcun problema.
Se sostituita con :
"SELECT max(numerofatt) as numerofattura FROM fatture"
Funziona benissimo è da un risultato immediato (l'obiettivo era in realtà ottenere l'ultimo numero di fattura emessa).
L'unica spiegazione che ho saputo darmi è stata che l'accesso al DB access effettutato tramite ODBC, in presenza di una query con ORDER BY di fatto blocca l'accesso al DB da parte di altri utenti, creando una spece di coda che poi IIS non riesce a smaltire.
Non riesco comunque a capire come mai l'esecuzione della query sulla tabella da circa 5000 record non venga portata a termine, mentre la query con il max() sia istantanea (il campo è ordinato).
Un problema di Recordset troppo grande????
Vi posto il codice.
Mi piacerebbe capire se c'è un errore di codice. Grazie a tutti.
codice:Set MyConn = Server.CreateObject("ADODB.Connection") ConnectionString = "DSN=gestionale" MyConn.Open ConnectionString, "", "" 'VA IN ERRORE sqlT = "SELECT numerofatt FROM fatture ORDER BY numerofatt DESC" Set RT = MyConn.Execute(SQLT) numerofatt = RT("numerofatt") Set RT = Nothing 'CORRETTA 'sqlT = "SELECT max(numerofatt) as numerofattura FROM fatture" 'Set RT = MyConn.Execute(SQLT) 'numerofatt = RT("numerofattura") 'Set RT = Nothing numerofatt = numerofatt + 1 Response.Write " Query numerofatt OK " & numerofatt %>

Rispondi quotando