In een onze applicaties wordt gebruik gemaakt van Access.mdb bestanden die via ADO worden benaderd met gebruik maken van de Jet-engine. Er wordt uitgebreid gebruik gemaakt van tijdelijke tabellen. Een bestaand probleem in Access is dat (tijdelijke) tabellen die tijdens een werksessie worden aangemaakt niet daadwerkelijk worden op opgeruimd. Ze verdwijnen bij een delete actie wel uit zicht maar zijn op de achtergrond nog steeds aanwezig. Als de totale filegrootte van het mdb bestand boven de 2 Gb komt is de database acuut niet meer toegankelijk. 2Gb lijkt veel maar blijkt in de praktijk regelmatig toch te worden bereikt.
Nou biedt Access ( cq. de Jet-engine) de mogelijkheid om direct te kunnen communiceren met andere mdb-databases. Door de tijdelijke tabellen niet weg te schrijven naar de "eigen" mdb maar naar een tijdelijk aangemaakte mdb kan het probleem van het vollopen van de database worden omzeild: tijdelijke database aanmaken ( in de centrale tempmap) , tabel wegschrijven naar die tijdelijke database, tabel in de tijdelijke database openen en laden in het werkgeheugen, dataconnectie verbreken (data blijft in geheugen en toegankelijk), tabel in tijdelijke database sluiten en tijdelijke database deleten.
Dit werkt al jaren probleemloos.
Er zijn de laatste tijd echter enkele klanten die na de een overgang naar een "grote" Windows 10 netwerkomgeving regelmatig de fout krijgen dat de aangemaakte tabel niet toegankelijk is ; "cannot perform this operation on a closed dataset". De fout lijkt tamelijk random op te treden. Het eerste mdb-bestand opent altijd probleemloos maar bij het openen van een nieuw bestand (zonder de applicatie te sluiten) gaat het regelmatig mis. In een standalone windows10 omgeving of een win10 mininetwerkje is er geen enkel probleem. Ik kan er de vinger niet achter krijgen.
Wat kan daarvan de oorzaak zijn?
- iets in het tempmanagement ( centrale tempdir vs applicatie tempdir vs persoonlijke tempdir oid) van win10 al dan niet in combinatie met de toegangsrechten van de gebruiker ?
- een oledb-driver in de nieuwe omgeving die roet in het eten gooit ( maar waarom dan in een gewone/kleine omgeving niet) ?
- het ongewild poolen van dataconnecties?
iemand een suggestie?
Bookmarks