2011-11-25 14 views
8

Ho un'applicazione Cassini che utilizza il file di accesso. Il programma di installazione aggiornato sovrascrive sia l'applicazione che il database. Tuttavia, l'applicazione vede ancora i vecchi dati anche dopo il riavvio del sistema. (Anche copiato il file MDB manualmente per assicurarsi che sia sostituito ma non aiuta.)Perché il driver OLEDB di Jet memorizza nella cache il mio file MDB?

L'unico modo per l'applicazione di visualizzare nuovi dati MDB è installarlo in una nuova cartella.

stringa di connessione è di serie (credo):

Connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + 
    HttpContext.Current.Server.MapPath("App_Data\\" + 
    ConfigurationManager.AppSettings.Get("dbfile")) + ";Jet OLEDB:Database Password=xxxx"; 

Qualsiasi idea di cosa sta succedendo e come evitare il problema di cache?

Aggiornamento (per rispondere ad alcune domande nei commenti):

  • Possiamo riprodurre il problema solo su Windows 7.
  • MDB non viene mai aggiornato dall'applicazione Cassini. Creiamo database e li inviamo agli utenti. - Ci siamo accertati che il file fosse stato sostituito con successo dal programma di installazione. In realtà la stessa cosa succede se la sostituiamo manualmente.
  • Il problema persiste dopo il riavvio di Windows.
+1

Con quale sistema operativo si sta lavorando? È Vista o Win7? – mwolfe02

+1

Quanto tempo restano i dati obsoleti? Ho riscontrato problemi con la memorizzazione nella cache di Jet nelle app VB6, ma era correlato a scritture che non venivano scaricate abbastanza rapidamente. – Gabriel

+0

@ m0sa Quindi, si dispone di un'applicazione Web in esecuzione e si desidera eseguire un programma di installazione per aggiornarlo. Esattamente quali operazioni esegue il programma di installazione prima di sostituire il file .mdb? Interrompi l'applicazione web? Interrompe il servizio IIS? E poi, cosa intendi per "riavvio del sistema"? (Quello che di solito intendiamo con questo è "riavviare Windows".) Inoltre, per favore rispondi alla domanda di mwolfe02, è importante. –

risposta

0

Impostare la proprietà di autorizzazione della cache di oggetto di connessione su false, che per impostazione predefinita è true.

http://msdn.microsoft.com/en-us/library/aa140022(v=office.10).aspx

+0

Questa proprietà è di sola lettura ed è sempre valida per il provider Jet. – m0sa

+0

Non so come la caching dell'autorizzazione possa influire su questo dato che vediamo i dati in stallo nel applicazione. Questa proprietà è di sola lettura comunque. – tomsame

0

Hai provato a usare il provider "Microsoft.ACE.OLEDB.12.0"? Credo che viene pre-installato con Windows 7.

1
  1. Vai alla soluzione Explorer
  2. Selezionare il file mdb
  3. Vai alla proprietà, c'è una proprietà
  4. Non copiare impostato per copiare se più recente
0

Il nuovo modello di sicurezza di Windows 7/Server 2008 presenta copie virtualizzate di file in alcune condizioni per ciascun utente.

È possibile che si verifichi questa funzionalità di progettazione che presenta le istantanee obsolete agli utenti al termine dell'installazione? È possibile che l'applicazione utilizzi credenziali diverse per l'utente che installa il database?

C'è una descrizione della funzionalità allo User Account Control Data Redirection. La soluzione consigliata è quella di utilizzare una cartella più appropriata per i dati

+0

Mai sentito parlare di quella funzione, difficile da dire senza ulteriori informazioni e test. Abbiamo risolto questo problema modificando il nome del file MDB con ogni nuova versione. Al momento non sono coinvolto in questo progetto, quindi non ho più feedback. – tomsame

Problemi correlati