Ik heb ergens een access-database draaien in een netwerk. Normaliter maak ik altijd gebruik van losse frontends (met installatiepakketjes) en een backend op het netwerk, maar bij deze klant is het netwerk zo traag dat dit onwerkbaar wordt.
Omschrijving
Het gaat hier om één van de grootste verzekeraars van nederland, een 100mbit netwerk, met een effectieve troughput van minder dan 0,5Mb/s gemiddeld bij het kopieren van files naar het windowsnetwerk
De reden dat ik dit vertel: ik hoef niemand te vertellen dat de netwerksnelheid omhoog moet: onhaalbaar project, daar is het bedrijf te groot voor en de belangen blijkbaar niet hoog genoeg. Dat gaat niet gebeuren (tenzij via andere wegen)
Als tijdelijke oplossing heb ik dan maar de FE en BE samengevoegd, dan werkt het nog behoorlijk goed. Maar: aangezien gebruikers dan rechtstreeks met de MDB werken (office 2003) loop je altijd het risico dat iemand het bestand incl. de data vernacheld, en dat is dus ook gebeurd: één dag na live gaan ging een gebruiker zelf een snelkoppeling maken en gooide in dat proces de database weg
Oplossing
Om dat risico te vermijden heb ik een stukje VBA-code geschreven die nu via het Filesystem-object een kopie van de database maakt (van zichzelf dus), en deze kopie daarna comprimeert en wegschrijft naar een andere lokatie. Elke dag wordt deze backup gemaakt door de eerste die inlogt, en de code zorgt ervoor dat een vooraf gedefinieerd aantal backups bewaard blijft (bijv. 10).
edit: voor de duidelijkheid: de backup wordt gemaakt door de eerste die inlogt. Op dat moment zijn er dus géén andere gebruikers, en is de database alleen door die persoon in gebruik.
Het is echter wel zo dat het kopieren van de 10-20mb grote database tot wel een minuut kan duren, dus er is wel een redelijke kans dat op dat moment iemand anders gaat inloggen.
Gedurende die tijd reageert Access ook totaal niet meer bij de user die de backup maakt.
Probleem
Enige punt van zorg is dat ik het maken van een kopie van een geopende database niet erg vertrouw.
Ik ben bang dat dit op een gegeven moment een onherstelbare corruptie veroorzaakt die zich vervolgens langzaam in de kopien verspreid als dit niet opgemerkt wordt, maar ik weet ook niet zeker of dat nou reeel is. Ik heb er in de praktijk eigenlijk nooit last mee gehad, en op internet lees wisselende berichten.
Nu zou ik iets kunnen maken waarbij de backupcode in een andere database zit, welke in plaats van het maken van een kopie wordt opgestart, waarna vervolgens déze database een kopie maakt van de oorspronkelijke database, die dan niet in gebruik is (want automatisch afgesloten). Of varianten hierop.
Andere niet heel ingewikkelde oplossing is dat ik de code aanpas zodat deze niet zozeer een kopie van de database maakt, maar de datatabellen (het belangrijkste) exporteert naar een backup-mdb.
Alleen, is dat nodig. Is dat risico reeel, dat een kopie maken van een geopende database problemen kan veroorzaken. Moet ik me die moeite op de hals halen.
Het gaat dus niet zozeer om een oplossing, alswel om hoe jullie het kopieren van geopende database zien
Omschrijving
Het gaat hier om één van de grootste verzekeraars van nederland, een 100mbit netwerk, met een effectieve troughput van minder dan 0,5Mb/s gemiddeld bij het kopieren van files naar het windowsnetwerk
De reden dat ik dit vertel: ik hoef niemand te vertellen dat de netwerksnelheid omhoog moet: onhaalbaar project, daar is het bedrijf te groot voor en de belangen blijkbaar niet hoog genoeg. Dat gaat niet gebeuren (tenzij via andere wegen)
Als tijdelijke oplossing heb ik dan maar de FE en BE samengevoegd, dan werkt het nog behoorlijk goed. Maar: aangezien gebruikers dan rechtstreeks met de MDB werken (office 2003) loop je altijd het risico dat iemand het bestand incl. de data vernacheld, en dat is dus ook gebeurd: één dag na live gaan ging een gebruiker zelf een snelkoppeling maken en gooide in dat proces de database weg
Oplossing
Om dat risico te vermijden heb ik een stukje VBA-code geschreven die nu via het Filesystem-object een kopie van de database maakt (van zichzelf dus), en deze kopie daarna comprimeert en wegschrijft naar een andere lokatie. Elke dag wordt deze backup gemaakt door de eerste die inlogt, en de code zorgt ervoor dat een vooraf gedefinieerd aantal backups bewaard blijft (bijv. 10).
edit: voor de duidelijkheid: de backup wordt gemaakt door de eerste die inlogt. Op dat moment zijn er dus géén andere gebruikers, en is de database alleen door die persoon in gebruik.
Het is echter wel zo dat het kopieren van de 10-20mb grote database tot wel een minuut kan duren, dus er is wel een redelijke kans dat op dat moment iemand anders gaat inloggen.
Gedurende die tijd reageert Access ook totaal niet meer bij de user die de backup maakt.
Probleem
Enige punt van zorg is dat ik het maken van een kopie van een geopende database niet erg vertrouw.
Nu zou ik iets kunnen maken waarbij de backupcode in een andere database zit, welke in plaats van het maken van een kopie wordt opgestart, waarna vervolgens déze database een kopie maakt van de oorspronkelijke database, die dan niet in gebruik is (want automatisch afgesloten). Of varianten hierop.
Andere niet heel ingewikkelde oplossing is dat ik de code aanpas zodat deze niet zozeer een kopie van de database maakt, maar de datatabellen (het belangrijkste) exporteert naar een backup-mdb.
Alleen, is dat nodig. Is dat risico reeel, dat een kopie maken van een geopende database problemen kan veroorzaken. Moet ik me die moeite op de hals halen.
Het gaat dus niet zozeer om een oplossing, alswel om hoe jullie het kopieren van geopende database zien
[ Voor 10% gewijzigd door Stefke op 07-01-2013 20:46 ]