Welkom op het forum van startpagina!

Dit forum staat op alleen-lezen. Je kan hier informatie zoeken en oude berichten terugvinden, maar geen nieuwe berichten plaatsen.

Naar overzicht van alle forums

Teveel koppelingen

  • M.v.Kesteren

    Wij maken gebruik van een front-end en een back-end.

    Er maken ongeveer 30 gebruikers gebruik van waardoor de hoeveelheid koppelingen die gelegd worden tussen de front-ends en de back-end teveel word.

    We hebben plannen om de back-end om te zetten naar een SQL server oplossing maar zover zijn we nog niet.

    Is er een manier om de koppelingen in de gaten te houden en evt. een toegang te blokkeren totdat er voldoende ruimte is om te openen?

    Indien je hier iets van weet, tips, trucs en ervaringen zijn welkom!

    Mathijs van Kesteren

  • RV2

    >Er maken ongeveer 30 gebruikers gebruik van waardoor de hoeveelheid koppelingen die gelegd worden tussen de front-ends en de back-end teveel word.<

    Hoeveelheid koppelingen die je moet onderhouden zou normaal gesproken onafhankelijk moeten zijn van het aantal gebruikers.

    Zet de frontend bij iedere gebruiker in dezelfde folder.

    Wat bedoel je met “te veel”?

    En wat bedoel je met “voldoende ruimte”, een koppeling neemt geen ruimte in beslag….

    >Is er een manier om de koppelingen in de gaten te houden en evt. een toegang te blokkeren totdat er voldoende ruimte is om te openen?<

    RV2

  • M.v.Kesteren

    Ik weet niet precies wat de koppelingen exact inhouden maar ik vermoed dat het de geopende tabellen zijn in de backend.

    1 tabel openen in de front-end die gekoppeld is aan 1 tabel in de back-end betekend dus 1 koppeling.

    Ik heb 62 tabellen in mijn back-end staan en een aantal schermen die meerdere tabellen tegelijk openen.

    Stel dat 5 gebruikers tegelijk een scherm openen met 30 koppelingen per stuk dan betekend dat er 150 koppelingen gemaakt moeten worden op dat moment.

    Ik weet niet wat de maximum is die access tegelijkertijd aankan of dat niet access maar mijn server de remmende factor is maar mijn ervaring leert mij dat ik geregeld de melding “onbekende database indeling krijg”.

    Op een eerdere post die ik hier gedaan heb kreeg ik een aantal adviezen om bijvoorbeeld de gedeelde directory waar de backend in staat zo dicht mogelijk bij dr root te zetten. Ook kwam hieruit voort dat deze melding onstaat door gecrashde systemen of happerende netwerkverbindingen waardoor de back-end niet netjes afgesloten word.

    Na enig testwerk blijkt access daar redelijk netjes mee overweg te gaan, ik heb deze melding niet kunnen reproduceren door netwerkverbindingen te verbreken en mijn systeem te laten crashen.

    Na enige overpeinzing kwam ik tot de conclussie dat een teveel aan koppelingen de boosdoener kon zijn. Daarna heb ik een ieder gevraagd niet gebruikte schermen te sluiten waardoor het aantal gelijktijdige koppelingen snel terug liep en het aantal meldingen ook.

    Een voorbeeld: sinds 2 weken geleden kreeg ik 1 of meerdere malen per dag de melding ongeldige database indeling. Nadat ik afgelopen woensdag de vraag heb gesteld om overbodige schermen te sluiten heb ik ze niet meer gezien tot vandaag.

    Een tijdelijke oplossing zou ik dus gaan zoeken in een gecontroleerde wijze van openen. Stel dat 150 gelijktijdige koppelingen de max zou zijn dan wil ik kunnen zien hoeveel koppelingen er reeds geopend zijn en hoeveel koppelingen er vereist zijn voor de uit te voeren actie. Indien de benodigde vrije koppelingen niet voorhanden zijn dan wil ik een melding geven en de toegang weigeren totdat de koppelingen vrij zijn.

    Dit voorkomt dat iedereen de database moet verlaten zodat ik hem kan repareren.

    Alle front-ends staan allemaal al in dezelfde directory. ze staan wel lokaal en niet op de server.

    Alle hulp/tips zijn welkom!

    Mathijs

  • RV2

    Een koppeling loopt een op een tussen FE en BE.

    Het maakt niet uit om hoeveel tabellen het gaat, per FE heb je 1 koppeling.

    Het koppelen op zich verklaart niet de foutmelding waar het om gaat.

    >Een voorbeeld: sinds 2 weken geleden kreeg ik 1 of meerdere malen per dag de melding ongeldige database indeling. Nadat ik afgelopen woensdag de vraag heb gesteld om overbodige schermen te sluiten heb ik ze niet meer gezien tot vandaag.<

    Dit doet vermoeden dat het probleem waar je mee te maken hebt veroorzaakt wordt door recordlocking of beter gezegd, het ontbreken daarvan.

    Recordlocking is een standaard fenomeen binnen relationele databases dat ervoor zorgt, dat gegevens die door een gebruiker in gebruik zijn, niet op hetzelfde moment door een andere gebruiker gewijzigd kunnen worden.

    En dan kan nog steeds meespelen dat je netwerk niet stabiel genoeg is.

    Met 30 gebruikers, afhankelijk van het aantal transakties, zou ik er eens over na gaan denken om over te gaan naar een meer stabiele BE omgeving.

    Het laten sluiten van schermen is op zich geen gek idee.

    Het zal echter de oorzaak van niet wegnemen.

    Wat me op een andere mogelijke oorzaak brengt.

    Kunnen de gebruikers Access afsluiten terwijl gegevens in een formulier nog niet “volledig” zijn ingevoerd?

    Dat kan namelijk voor korruptie zorgen.

    RV2

  • M.v.Kesteren

    De koppelingen waar ik over spreek zijn de koppelingen die de server aangeeft die liggen tussen de fe en de be. Ik kan daar zien dat de be 1x geopend is maar bijv. 35 koppelingen heeft in die ene opening. Deze koppelingen nemen af of toe naarmate men meer geopend heeft in de fe.

    Misschien dat dit iets is van windows zelf en verder niets met access te maken heeft, dit zou kunnen.

    Ik maak gebruik van de standaard record locking idd wat wil zeggen dat men een halve record niet af kan sluiten.

    Wat ik de laatste tijd ook steeds meer zie is dat er problemen ontstaan bij het verwerken van gegevens op plaatsen waar de laatste tijd niets gewijzigd is.

    De problemen die hier ontstaan uitten zich inderdaad op het gebied van recordlocking.

    Je kunt je gaan afvragen of mijn corrupte database voortkomt uit deze meldingen of komen deze meldingen voort uit de corrupte database.

    Het vervelende is dat ik deze foutmeldingen maar zelden gemeld krijg en dus een slecht beeld heb van deze problemen of de oorzaak hiervan.

    Ik had een MsSql oplossing al op mijn verlanglijstje staan, het lijkt er op dat deze iets naar voren geschoven gaat worden.

    Heb je ervaringen en/of tips mbt het omzetten van een be situatie naar een sql be?

    Mathijs

  • M.v.Kesteren

    Een kleine toevoeging:

    De server geeft aan dat het om vergrendelingen gaat i.p.v. koppelingen.

    Mathijs

  • ERic B

    Ik heb niet echte concrete antwoorden voor je maar wel wat tips om het geheel misschien wat stabieler te laten lopen.

    Als je een database hebt waarin veel geprogrammeerd is moet je van deze opdracht even een snelkoppeling maken

    -1-

    “C:\Program Files\Microsoft Office\Office\MSACCESS.EXE” “C:\LProjecten\Tioga\Ontwikkeling\mijndatabasenaam.mdb” /decompile

    **kontroleer even het pad naar access en mijndatabasenaam moet je vervangen door de naam van je database.

    -2- Als er in de database is geprogrammeerd dan moet je eens nagaan of het nodig is om tabellen te openen met de cursor dynaset. Als je info opvraagt is een forward cursor al genoeg

    voorbeeldje :

    Set db = CurrentDb

    thequery = "select from where productID=" & prsrt

    Set therec = db.OpenRecordset(thequery, dbOpenForwardOnly)

    Hetzelfde kan je ook toepassen op formulieren waar gebruikers alleen maar mogen kijken.

    -3- Kijk even Bij Extra/Opties/ tabblad geavanceerd of de optie Database openen met recordvergrendelingen is aangevinkt. Standaardvergrendelingen is geen.

    -4- Kijk ook eens even naar de hoeveelheid vrij geheugen op de diverse machines. nadat access is opgestart. Als er in de database is geprogrameerd kan je

    geheugen vrij maken door het recordset en de database te sluiten

    db.close

    set db = nothing

    recordset.close

    set recordset=nothing