none
Microsoft JET Database Engine: Unspecified error RRS feed

  • Domanda

  • Salve a tutti, ho un errore molto strano, e vorrei avere un aiuto.

    Ho un server windows 2008 R2, che fa da iis7.5 server, e alcuni clienti si sono lamentati che dai loro scipt ASP non riescono a fare la compressione dei db access (.mdb), tutte le altre operazioni sono ok ma la compressione da questo errore:

    Microsoft JET Database Engine error '80004005'
    Unspecified error

    Allora per capire se era un problema di asp o di altro ho fatto un vbscript e anche in questo modo mi da il solito errore.
    Per rendere la cosa ancora piu curiosa non tutti i miei server 200R2 lo fanno, ma solo 10 di 30, e i server sono stati tutti configurati con la stessa procedura

    Vi faccio l'elenco delle cose che ho già controllato e che potevano creare questa situazione:
    1) cartella TEMP e TMP, i permessi sono ok, sia l'utente dell'app-pool nel caso dello script hanno full control (poi lo script lo eseguo con il mio user che è entAdmin)
    2) Confrontando il procmon di 2 server 1 che fa e uno che non va, è tutto identico, tranne che in quello che non va, ad un certo punto dopo la lettura del mdb e ldb esce, senza errori
    3) l'event viewer non segnala nulla
    4) i software installati sono gli stessi e delle stesse versioni

    Vi viene in mente qualcosa che possa aiutarmi? grazie

    Alexmela

    venerdì 27 maggio 2011 15:01

Tutte le risposte

  • Ho un server windows 2008 R2, che fa da iis7.5 server, e alcuni
    clienti si sono lamentati che dai loro scipt ASP non riescono a fare
    la compressione dei db access (.mdb), tutte le altre operazioni sono
    ok ma la compressione da questo errore:

    Un consiglio spassionato; togli di mezzo tutti gli MDB e convinci i
    tuoi utenti ad usare SQL server, potrai installarlo sullo stesso server
    o su un altro o installare SQL server "full" o "express" ma... se vuoi
    vivere tranquillo, lascia perdere i database "mdb" :)

    Microsoft JET Database Engine error '80004005'
    Unspecified error

    http://support.microsoft.com/kb/306269

    il problema, per come la vedo è che probabilmente il database è
    ancora in uso (aperto) magari da qualche altro utente della stessa
    applicazione web e questo ovviamente causa il fallimento delle
    operazioni di compressione dato che queste richiedono l'accesso
    esclusivo al database

    venerdì 27 maggio 2011 15:18
  • noi siamo un hosting provider, e la disponibilità di sql la diamo ai clienti, e anche con piu DB, ma purtroppo, poi ognuno scegliela sua strada nella programmazione web.

    La segnalazione l'avevo già vista e non è il mio caso, io tutte le cose che suggerisce le ho controllate e sono ok.

    Per quanto riguarda del file esclusivo, ti dico che lo è, nel caso dello vbscript, è un file a se, che viene usato al momento, quindi non è condiviso con nessuno.

    Altre idee, grazie mile

    Alexmela

    venerdì 27 maggio 2011 15:35
  • noi siamo un hosting provider, e la disponibilità di sql la diamo ai
    clienti, e anche con piu DB, ma purtroppo, poi ognuno scegliela
    sua strada nella programmazione web.

    Credo fareste meglio a dissuadere i clienti dall'insana abitudine
    di usare DB "access" per applicazioni web; tale tipo di DB è nato
    come desktop DB e non è mai stato pensato per l'uso web; il
    fatto che poi "funzioni" non implica che sia corretto utilizzarlo.. ma
    del resto, ognuno è libero di farsi del male come preferisce

    Per quanto riguarda del file esclusivo, ti dico che lo è, nel
    caso dello vbscript, è un file a se, che viene usato al
    momento, quindi non è condiviso con nessuno.

    Forse non sono stato chiaro; supponiamo che ci sia un sito
    scritto in (es.) ASP; all'apertura di varie pagine, il sito apre il
    DB access e carica da questo varie informazioni; ora... in un
    dato momento "x" puoi avere "n" utenti che richiedono pagine
    al sito causando l'uso del database che quindi NON può
    essere aperto in modalità esclusiva. Per verificare la cosa
    ti basta riuscire a riprodurre il problema (errore in questione)
    quindi, dalla console di IIS arrestare il sito in questione e poi
    dopo qualche secondo... diciamo un paio di minuti tanto per
    stare tranquilli, tentare l'operazione di compattamento (sempre
    con il sito "spento")

    venerdì 27 maggio 2011 16:28
  • Per quanto rigurda la parte dell'uso esclusivo, io ho capito perfettamente quello che te mi suggerivi, ma forse io non mi sono spiegato, io per fare un test, ed escludere il problema dell'esclusività, ho fatto un vbscript e l'ho lanciato da dos con il mio utente che è un Admin, e mi da lo stesso errore, e qui non c'è ne problemi di permessi, ne problemi di uso da parte di altre app.........

     

    hai altre idee?

     

    Alexmela

    lunedì 30 maggio 2011 07:56
  • Hai già letto questi articoli ?

    http://forums.iis.net/t/1144494.aspx

    http://tutorials.aspfaq.com/8000xxxxx-errors/80004005-errors.html


    Fabrizio Volpe
    MVP Directory Services
    MCSE (NT4)(2000)(2003) - MCSA (2003)
    MCTS (SQL 2005)(Exchange 2007)(Windows 2008)
    Fortinet Certified Network Security Professional (FCNSP)
    Fabrizio[_dot_]Volpe[_at_]GMX[_dot_]com
    lunedì 30 maggio 2011 08:49
  • Per quanto rigurda la parte dell'uso esclusivo, io ho capito
    perfettamente quello che te mi suggerivi, ma forse io non
    mi sono spiegato, io per fare un test, ed escludere il
    problema dell'esclusività, ho fatto un vbscript e l'ho lanciato
     da dos con il mio utente che è un Admin, e mi da lo stesso
    errore, e qui non c'è ne problemi di permessi, ne problemi
    di uso da parte di altre app.........

    Un momento; il database che hai cercato di usare con quello
    script è un DB posto nella cartella di un sito o un DB posto in
    una cartella a se stante, non pubblicata ed usato soltanto per
    testare lo script ?

    lunedì 30 maggio 2011 08:50
  • Un momento; il database che hai cercato di usare con quello
    script è un DB posto nella cartella di un sito o un DB posto in
    una cartella a se stante, non pubblicata ed usato soltanto per
    testare lo script ?

    Io sto usando un db creato da me in access. Il db è stato fatto con access 2003 e ha una tabella.
    Ho creato tutto ex-nuovo, perchè inizialmente pernsavo fosse un problema dei dati del cliente.

    Grazie

    lunedì 30 maggio 2011 09:22
  • Io sto usando un db creato da me in access. Il db è stato fatto con
    access 2003 e ha una tabella. Ho creato tutto ex-nuovo, perchè
    inizialmente pernsavo fosse un problema dei dati del cliente.

    Ok, scusa la pignoleria ma volevo essere certo che si trattasse
    di un database "di test" con accesso esclusivo da parte del tuo
    script; appurato ciò, direi che il problema potrebbe esser dovuto
    ad una delle cause elencate nei due documenti linkati al post di
    Fabrizio, quindi ti suggerirei di verificare in tal senso, inoltre, già
    che ci sei potresti provare a forzare una (re)installazione delle
    varie componenti di Jet 4.0 e di MDAC; al proposito, ti consiglio
    di leggere quanto segue

    http://www.microsoft.com/downloads/en/details.aspx?FamilyID=8F0A8DF6-4A21-4B43-BF53-14332EF092C9

    http://support.microsoft.com/kb/q239114/

    http://support.microsoft.com/kb/271908

    http://www.microsoft.com/downloads/en/details.aspx?FamilyID=78cac895-efc2-4f8e-a9e0-3a1afbd5922e

    lunedì 30 maggio 2011 09:54
  • Io tutte queste cose non le posso applicare perchè purtroppo ho windows 2008 R2, i cui componenti non sono intallati a parte ma sono compresi nel sistema operativo, infatti si chiamano WDAC.

    E non sono piu aggiornabili o reinstallabili, ma si può fare solo se escono agg con windows update.

    Se poi mi sbagliio correggetemi

    grazie

    lunedì 30 maggio 2011 10:30
  • E non sono piu aggiornabili o reinstallabili, ma si può
    fare solo se escono agg con windows update.

    Beh, non soltanto

    http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en

    :) - ad ogni modo, visto che hai parlato di uno script
    che stai usando per fare i vari tests; potresti anche
    postare qui il codice dello script dato che potrebbe
    fornire qualche ulteriore indicazione

    lunedì 30 maggio 2011 11:02
  • Ho provato anche ad installare questi componenti, che te mi hai suggerito ma l'errore è smpre lo stesso,
    La cosa che non mi torna, è che io nella mia AD, ho 30 server tutti 2008R2, e 15 di questi sono dei FE IIS7.5
    E di questi solo 10 mi danno errore gli altri funzionano regolarmente (mi sembra ovvio ricordarti che sono tutti uguali essendo un cluster).
    Non solo se faccio girare lo script anche su altre macchine, esempio FTP, DC o SQL o il mio pc win7 lo script va, quindi convieni con me che non è una mancanza di librerie o librerie non aggiornate o di script.

    CMQ questo è il codice dello script:

    ' Compact Access DBs in the system DB directory
    ' 12-21-2001 Paul R. Sadowski


    Const strDBDir = "w:\temp\Database"
    Dim arrDBs()
    Dim idx, tmpext

    Randomize
    tmpext = "." & Int((999 - 100 + 1) * Rnd + lowerbound) & ".tmp"
    idx = 0

    Set WshShell = WScript.CreateObject("WScript.Shell")
    Set fso = CreateObject("Scripting.FileSystemObject")

    GetFiles(strDBDir)
    GetSubFolders(strDBDir)

    for x = 0 to idx -1
     CompactDB(arrDBs(x))
    next

    Set WshShell = Nothing
    Set fso = Nothing

    Function GetSubFolders(strFld)
    Set objDBs = fso.GetFolder(strFld)
    Set objDBFolders = objDBs.SubFolders

    for each x in objDBFolders
     GetFiles(x)
     GetSubFolders(x)
    next

    Set objDBFolders = Nothing
    Set objDBs = Nothing
    end function

    Function GetFiles(strPath)
    Set objDBs = fso.GetFolder(strPath)
    Set objFiles = objDBs.Files
    for each f in objFiles
     if Ucase(FileExt(f)) = "MDB" then
      redim preserve arrDBs(idx+1)
      arrDBs(idx) = f
      idx = idx + 1
     end if
    next

    Set objDBs = Nothing
    Set objFiles = Nothing
    end function

    'Return the filename extension portion of a path/filename
    function FileExt(FullPath)
    dim x
    dim tmpstring

    x = Len(FullPath)
    for y = x to 1 step -1
     if mid(FullPath, y, 1) = "." then
      tmpstring = mid(Fullpath, y+1)
      exit for
     end if
    next
    FileExt = tmpstring
    end function

    'Compact an access Database
    Function CompactDB(dbPath)

    wscript.echo "Compacting " & dbPath

    Set fso1 = CreateObject("Scripting.FileSystemObject")
    Set jro = CreateObject("Jro.JetEngine")
    jro.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbpath & ";Jet OLEDB:Database Password=", _
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbpath & tmpext & ";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Password="
    fso1.DeleteFile(DBpath)
    fso1.MoveFile dbpath & tmpext, dbpath
    set jro = Nothing
    set fso1 = Nothing
    End Function

     

    ciao

     

    lunedì 30 maggio 2011 12:05
  • > ' 12-21-2001 Paul R. Sadowski

    Ah... uno degli script del povero Paul (R.I.P. 8-2-2011)
    se fosse qui ti consiglierebbe di mollare "mdb" per
    uno scopo del genere e passare a SQLexpress...
    ma ok... fammi controllare un paio di cose...

    lunedì 30 maggio 2011 13:29
  • Ah... uno degli script del povero Paul (R.I.P. 8-2-2011)
    se fosse qui ti consiglierebbe di mollare "mdb" per
    uno scopo del genere e passare a SQLexpress...
    ma ok... fammi controllare un paio di cose...

    Potresti per cortesia verificare se il file seguente esista
    e, nel caso, quale sia la versione dello stesso ?

    C:\Program Files (x86)\Common Files\System\ado\msjro.dll

    lunedì 30 maggio 2011 13:56
  • Il file c'è e questa è la versione:

    lunedì 30 maggio 2011 14:08
  • Il file c'è e questa è la versione:

    Questa ?!?

    Comunque; potresti per favore provare quanto segue ?

    Scarica questo http://support.microsoft.com/kb/295334 - avvia l'eseguibile ed estrai i files in una cartella (es. "c:\jetcu") quindi copia il tuo database di test nella cartella stessa ed avvia l'eseguibile (jetcomp.exe); immetti il nome del tuo DB (quello da "compattare") in "source" ed un altro nome (es. c:\jetcu\test.mdb) relativo ad un file mdb NON esistente in "destination", lascia il valore relativo al "locale" al default ed assicurati che sia selezionata la versione 4.x, quindi clicca il bottone compact e fammi sapere cosa succederà; anzi, nel caso in cui NON si verifichino errori, prova ad aprire il database specificato come destinazione verificando che sia integro e leggibile

     

    lunedì 30 maggio 2011 14:24
  • Avevo incollato l'immagine delle proprieta del file ma non è venuto:

    La versione è: 6.1.7601.17514

    Ho scaricao il file JETCOMP 4.0 e l'ho provato, anche lui mi da: ERROR COMPACTING DATABASE

     

    grazie

    lunedì 30 maggio 2011 14:36