+ Rispondi alla Discussione
Risultati da 1 a 7 di 7

Microsoft OLE DB Provider for ODBC Drivers error '8007000e'

Ultimo Messaggio di paocavo il:
  1. #1
    Esperto L'avatar di fre2004
    Data Registrazione
    Aug 2006
    Messaggi
    281

    Microsoft OLE DB Provider for ODBC Drivers error '8007000e'

    sul mio sito ho questo messaggio,

    Microsoft OLE DB Provider for ODBC Drivers error '8007000e'
    [Microsoft][ODBC Microsoft Access Driver] Not enough space on temporary disk.
    /offerte/Index.asp, line 8

    please, aiutatemi!

    il codice è:

    <%@LANGUAGE="VBSCRIPT"%>
    <!--#include virtual="/Connections/linkofferte.asp" -->
    <%
    Dim Recordset1
    Dim Recordset1_numRows

    Set Recordset1 = Server.CreateObject("ADODB.Recordset")
    Recordset1.ActiveConnection = MM_linkofferte_STRING
    Recordset1.Source = "SELECT testo FROM Url WHERE id=1"
    Recordset1.CursorType = 0
    Recordset1.CursorLocation = 2
    Recordset1.LockType = 1
    Recordset1.Open()

    Recordset1_numRows = 0

    [...cut by paocavo ...]



    <%
    Recordset1.Close()
    Set Recordset1 = Nothing
    %>
    Ultima modifica di paocavo; 26-01-07 alle 16:23

  2. #2
    User
    Data Registrazione
    Nov 2006
    Messaggi
    52
    prima dell'edit del messaggio ho visto che la parte che chiude i recordset era dopo il tag finale </html>. Io proverei a spostarli prima.
    Se questo non funziona, cercando su GG "Not enough space on temporary disk" (completo di virgolette) ci sono vari risultati che suggeriscono operazioni che può valere la pena provare.

  3. #3
    Moderatore L'avatar di Legolas
    Data Registrazione
    Mar 2005
    Località
    Viterbo
    Messaggi
    770
    Aggiungi Legolas su Facebook Aggiungi Legolas su Linkedin
    generalmente questo errore è causato quando l'utente IUSR non ha permessi nella directory dove vengono creati i file .tmp solitamente %windir%\temp\ o %systemdrive%\temp\

    Ciao

  4. #4
    Moderatore L'avatar di paocavo
    Data Registrazione
    Mar 2006
    Località
    Lecce, Italy
    Messaggi
    1,016
    Aggiungi paocavo su Facebook Aggiungi paocavo su Linkedin
    Ho editato il primo post perchè supera il limite max di righe di codice che è possibile inserire in un singolo post. Leggete il regolamento ed le discussioni in evidenza (Sticky) poste in cime alla lista delle discussioni.

    Ritornando al tema della discussione ritengo che il problema sia nella gestione della apertura e chiusura dei recodset.
    fre2004 apre 5 recodset uno dietro l'atro e poi li chiude e distrugge (Set Recordset=Nothing) tutti insieme alla fine dello script.
    Prova a chiudere i recodset ed a porli a "Nothing", ad uno ad uno, subito dopo il loro utilizzo e prima di aprirne un altro.


  5. #5
    User
    Data Registrazione
    Nov 2006
    Messaggi
    52
    non ho mica detto che non dovevi editare

    in ogni caso scusa

  6. #6
    User L'avatar di vins78
    Data Registrazione
    Jul 2006
    Località
    Bologna
    Messaggi
    34
    Citazione Originariamente Scritto da paocavo

    Ritornando al tema della discussione ritengo che il problema sia nella gestione della apertura e chiusura dei recodset.
    fre2004 apre 5 recodset uno dietro l'atro e poi li chiude e distrugge (Set Recordset=Nothing) tutti insieme alla fine dello script.
    Prova a chiudere i recodset ed a porli a "Nothing", ad uno ad uno, subito dopo il loro utilizzo e prima di aprirne un altro.

    A mio parere...
    Sono nulla per il server.
    Non c'è nessuna differenza nel fare 5 close e 5 nothing oppure 5 close+nothing.

    My 2 cents

    P.S. Aggiungo questo: se in una funzione dichiari una variabile locale recordset, la apri e non la chiudi mai, comunque l'oggetto viene chiuso quando la funzione termina.
    Se invece usi 50 variabili globali, allora è importante chiudere il recordset: impostarlo a nothing non serve più di tanto. Al close non hai più una connessione attiva al db, che è quella che ti consuma risorse. vbscript non ha un garbage collector differito, come .NET.
    In .NET è vitale chiudere l'oggetto e rimuovere ogni riferimento all'oggetto stesso, pena uno spreco di risorse esagerato.
    Cioè, in vbscript/vb appena un oggetto non è più usato viene liberato (close + nothing).
    In .NET questa operazione viene fatta in un secondo momento, a piacimento del garbage collector, quindi anche dopo diversi minuti e quindi la risorsa rimane allocata.
    Quindi, in .NET se usi una variabile locale recordset, devi assicurarti che l'oggetto sia chiuso, anche nel caso si verifichi un'errore e la tua funzione sia terminata preventivamente (vale a dire, devi gestire nell'on error la chiusura di tutti gli oggetti).
    Una menata galattica.
    Ultima modifica di vins78; 29-01-07 alle 13:33
    www.f-merchant.com Software e-commerce italiano

  7. #7
    Moderatore L'avatar di paocavo
    Data Registrazione
    Mar 2006
    Località
    Lecce, Italy
    Messaggi
    1,016
    Aggiungi paocavo su Facebook Aggiungi paocavo su Linkedin
    Citazione Originariamente Scritto da vins78
    A mio parere...
    Sono nulla per il server.
    Non c'è nessuna differenza nel fare 5 close e 5 nothing oppure 5 close+nothing.
    Dipende da cosa fai con i recordset è quanti record ciascuno di essi gestisce nella select. In ogni caso è buona norma disfarsi degli oggetti non più necessari non appena possibile sia per motivi di efficienza del codice sia per motivi di "efficacia" e "manutenibilità" dello stesso.

    Se invece usi 50 variabili globali, allora è importante chiudere il recordset: impostarlo a nothing non serve più di tanto.
    Infatti nel caso del nostro amico si tratta di Variabili Globali (tutte)

    Al close non hai più una connessione attiva al db, che è quella che ti consuma risorse. vbscript non ha un garbage collector differito, come .NET.
    In .NET è vitale chiudere l'oggetto e rimuovere ogni riferimento all'oggetto stesso, pena uno spreco di risorse esagerato.
    Cioè, in vbscript/vb appena un oggetto non è più usato viene liberato (close + nothing).
    In .NET questa operazione viene fatta in un secondo momento, a piacimento del garbage collector, quindi anche dopo diversi minuti e quindi la risorsa rimane allocata.
    Quindi, in .NET se usi una variabile locale recordset, devi assicurarti che l'oggetto sia chiuso, anche nel caso si verifichi un'errore e la tua funzione sia terminata preventivamente (vale a dire, devi gestire nell'on error la chiusura di tutti gli oggetti).
    Grazie per l'utilissimo mini-tutorial sul Garbage Collector di ASP.NET


+ Rispondi alla Discussione

Tag per Questa Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.