none
Windows 2012R2 IIS ClassicAsp fallisce la connection a DB Access RRS feed

  • Domanda

  • Ho sostituito un server 2003 con 2012R2 ed ho migrato una web application sviluppata con Classic ASP, non riesco a connettermi ad uno dei database che è Ms Access (2003), malgrado diversi tentativi ottengo sempre lo stesso errore.

    In precedenza la connection veniva fatta senza DSN e questo non funziona, poi ho provato anche con un DSN configurato come ODBC32 e persiste il tipo di errore.

    Questo l'errore ritornato:

    Microsoft OLE DB Provider for ODBC Drivers error '80004005'

    [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application

    lunedì 24 agosto 2015 11:12

Risposte

  • Ciao, office 2003 e quindi anche Access non è compatibile con 2012 R2, di li sicuramente la tua problematica. La compatibilità massima del 2003 è con 7-2008 R2.

    Andrebbe ricompilata.

    Ciao.

    A.

    lunedì 24 agosto 2015 11:22
    Moderatore
  • a mio modesto parere, o migri la base di dati verso qualcosa di più gestibile come ad esempio SQL Server Express e modifichi le connection string per dell'applicazione per accedere all'istanza di SQL (l'ho fatto poco tempo fa e migrare il database non è stato neanche così complesso) oppure tieni tutta la tua soluzione così com'è ma installi sotto il win2k12 una virtual machine con windows server 2003 o addirittura xp con IIS e MSAccess 2003 e tieni in ambiente virtuale la soluzione obsoleta prestando attenzione a non esporre questo ambiente virtuale a "pericolosi spifferi" esterni.

    ciao.


    Edoardo Benussi
    Microsoft MVP - Directory Services
    edo[at]mvps[dot]org


    mercoledì 26 agosto 2015 12:23
    Moderatore

Tutte le risposte

  • Ciao, office 2003 e quindi anche Access non è compatibile con 2012 R2, di li sicuramente la tua problematica. La compatibilità massima del 2003 è con 7-2008 R2.

    Andrebbe ricompilata.

    Ciao.

    A.

    lunedì 24 agosto 2015 11:22
    Moderatore
  • Quindi se prendo il file .mdb e lo converto da 2003 a 2010 (o 2013) dovrei ottenere che funziona la connection?
    lunedì 24 agosto 2015 12:39
  • guarda questo thread:

    http://stackoverflow.com/questions/24416688/architecture-mismatch-between-32-bit-and-64-bit-odbc-drivers


    This post is provided AS IS with no warranties or guarantees, and confers no rights.
    ~~~
    Questo post non fornisce garanzie e non conferisce diritti

    lunedì 24 agosto 2015 12:47
  • Quindi se prendo il file .mdb e lo converto da 2003 a 2010 (o 2013) dovrei ottenere che funziona la connection?

    Be' insomma...dipende da chi ha sviluppato il sw. Non è che basta convertire un file di access per far funzionare un'applicazione da un sistema all'altro..stai comunque partendo dalla parte sbagliata secondo me, il problema dovrebbe risolvertelo lo sviluppatore, non il sistema operativo, si arriva ad un punto in cui la retroattività sparisce di qui la parola "aggiornamento software" :-)

    ciao.

    A.

    lunedì 24 agosto 2015 12:54
    Moderatore
  • a mio modesto parere, o migri la base di dati verso qualcosa di più gestibile come ad esempio SQL Server Express e modifichi le connection string per dell'applicazione per accedere all'istanza di SQL (l'ho fatto poco tempo fa e migrare il database non è stato neanche così complesso) oppure tieni tutta la tua soluzione così com'è ma installi sotto il win2k12 una virtual machine con windows server 2003 o addirittura xp con IIS e MSAccess 2003 e tieni in ambiente virtuale la soluzione obsoleta prestando attenzione a non esporre questo ambiente virtuale a "pericolosi spifferi" esterni.

    ciao.


    Edoardo Benussi
    Microsoft MVP - Directory Services
    edo[at]mvps[dot]org


    mercoledì 26 agosto 2015 12:23
    Moderatore
  • Ciao IvanoB,

    Non abbiamo ricevuto alcun aggiornamento e mi chiedevo se possiamo aiutarti ulteriormente o se il tuo quesito è stato risolto.
    Se così fosse ti saremmo grati di condividere il feedback in questo spazio ricordandoti che altri membri della community potrebbero riscontrare comportamenti simili.

    Grazie in anticipo.


    • Microsoft offre questo servizio gratuitamente, per aiutare gli utenti e aumentare il database dei prodotti e delle tecnologie. Il contenuto viene fornito “così come è e non comporta alcuna responsabilità da parte dell’azienda.

    lunedì 31 agosto 2015 09:23
  • Ciao a tutti,
    ho trovato risposta alle mie domande e condivido la soluzione.

    Prima di tutto una premessa per individuare il problema.
    Avevo migrato una webapp classic asp da un server 2003 ad un server 2012r2, nel server di origine avevo un DB principale SqlServer 2005 di circa 4Gb e altri DB secondari con Access. Sul server di origine non era presente Access come applicazione perchè non serviva, gli script ASP classic usano i DSN o le stringhe di connessione direttamente nel codice.
    La migrazione fu facile: backup db da sqlserver 2005 e restore su sqlServer2014, copia dei db Access.

    L'applicazione web classic asp parte regolarmente ma quando si accede alla pagina cliente/fornitore mi dà errore, infatti la verifica degli ABI e CAB e la descrizione di questi sono su db access.

    L'errore "The specified DSN contains an architecture mismatch between the Driver and Application" era palese, dice che c'è un conflitto tra i 32bit e i 64.

    Io avevo configurato un DSN per i file Access a 32bit, essendo i file access "vecchi". Non avevo altre alternative essendo presente in windows 2012r2 solo i driver a 32bit per access.

    La soluzione.

    • Installare i driver per Ms Access a 64 bit da scaricare dal sito Microsoft
      Microsoft Access Database Engine 2010 Redistributable
      https://www.microsoft.com/it-it/download/details.aspx?id=13255
    • Aprire il file access, con MsAccess almeno versione 2007 ed accettare la conversione, salvare il file, meglio se con estensione .accdb. Copiarlo sul server.
    • Configurare un DSN con ODBC 64 bit
    • aprire Gestione IIS, selezionare "pool di applicazioni", fare clic sulla voce "DefaultAppPool" e fare clic su "impostazioni avanzate..." nel menu azioni di destra
    • nella finestra delle impostazioni, sezione "(generale)" , alla voce "Attiva applicazioni a 32 bit" assicurarsi che sia a FALSE, infatti ora webapp e DBs sono tutti a 64 bit.

    Quando mi successe l'errore optai per la trasformazione dei db access in sqlserver e così diedi la possibilità di lavorare al cliente.
    Poi con calma mi sono documentato capii che MS non ci tiene più molto ad Access (altrimenti non mi spiego perchè sul 2012 siano presenti gli odbc a 32 invece di quelli a 64, purtroppo è così anche su W10) e trovai i drive a 64bit da scaricare. Poi applicai la modifica dal cliente ritornando ad utilizzare il file access.
    Ora il programma che periodicamente prendeva il file dalle banche e generava un file access da distribuire ai clienti l'ho clonato e gli faccio produrre anche un abicab.accdb. Le webapp che ho dai clienti si vengono a prendere il file sul nostro server e ora chi ha w2012r2 viene a prendersi quello nuovo.

    Con poco sforzo ho ripristinato gli automatismi.

    Spero che questo sia stato apprezzato.

    Ciao a tutti.
    Ivano.

    sabato 10 ottobre 2015 13:44