04. juli 2005 - 14:15Der er
23 kommentarer og 1 løsning
Problem med database der vokser helt uforholdsmæssigt
Jeg har et massivt problem med en database der bare vokser og vokser. Der ligger en lille stump VBA kode i den, der kører hvert 10. sekund. Databasen har ikke mere end ca. 100 poster, men vokser til trods for dette til 149GB i løbet af et døgn.
Hvad pokker kan der være galt med dette. Jeg synes jeg har prøvet at sætte det hele = nothing, Koden ser således ud:
JENSEN63 har før hjulpet mig lidt med koden, så det kan være han har et godt forslag ?!
Function DecodeString()
DoCmd.SetWarnings False Dim strSQL As String Dim db As DAO.Database
Set db = CurrentDb()
strSQL = "INSERT INTO Data ( ID, Dato, Tidspunkt, Sensor1, Sensor2, Sensor3, Sensor4, Sensor5, Sensor6, Sensor7, Sensor8 )" strSQL = strSQL & "SELECT Mid([MSG],3,2) AS ID, " strSQL = strSQL & "Mid([senttime],1,10) AS Dato, " strSQL = strSQL & "Mid([senttime],12,8) AS Tidspunkt, " strSQL = strSQL & "Mid([MSG],6,5) AS Sensor1, " strSQL = strSQL & "Mid([MSG],12,5) AS Sensor2, " strSQL = strSQL & "Mid([MSG],18,5) AS Sensor3, " strSQL = strSQL & "Mid([MSG],24,5) AS Sensor4, " strSQL = strSQL & "Mid([MSG],30,5) AS Sensor5, " strSQL = strSQL & "Mid([MSG],36,5) AS Sensor6, " strSQL = strSQL & "Mid([MSG],42,5) AS Sensor7, " strSQL = strSQL & "Mid([MSG],48,5) AS Sensor8 " strSQL = strSQL & "FROM ozekismsin " strSQL = strSQL & "Where Left(msg, 2) = 'ID'" db.Execute strSQL
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Det er desværre ikke helt de svar jeg er ude efter. Jeg har skrevet lidt forkert. Den vokser til 1,49GB i løbet af et døgn. OG DET ER VEL AT MÆRKE MED EN TILFØJELSE PÅ KUN 4 POSTER.
Maskinen den kører på står et ubemandet sted, så det er ikke muligt at rende hen til den for at komprimere den hvert døgn. Det kan desværre heller ikke lade sig gøre at automatisere en komprimering, da der er delt adgang til databasen.
Jeg ved ikke helt hvad jeg skal stille op, for den kommer med en runtime error out of memory, og går så i stå. Det er ikke godt, for den skal faktisk kontinuerligt stå og logge nogle temperaturdata.
Jeg har prøvet at køre den på min lokale maskine, og der går ikke 10 minutter før databasestørrelsen er fordoblet.
Access DOES grow in size when in use even when you are not actually adding records. You could try altering your code to see if it helps, but there are no guaranties. You could try using Dcount() to see if there are any records in ozekismsin and only if there are run the code to addthem to your tables.
You could also try increaing the time from 10 to 20 second or even more.
BUT! You still need to compact and repair. There are tools on the market which can do this for you
måske ER det netop UPDATE der er problemet, for jeg synes først det er efter den er kommet på systemet det er begyndt at gå rigtigt galt. Jeg ved ikke hvordan man anvender Dcount. Systemet er i øjeblikket styret med nøgler på hvert felt, således at det samme felt ikke tilføjes mere end een gang. Dcount var måske meget bedre, for så skal koden ikke kigge på alle poster i databasen hver gang.
Hvordan komprimerer man en database uden at have udelt adgang ?
Ok, det ser interessant ud. Jeg må lige have lidt tid til at kigge det igennem og prøve mig frem, så skriver jeg om det giver nogle brugbare resultater.
Der er ikke umiddelbart noget gennembrud i mit problem efter besvarelserne i dag. For at kunne komprimere basen skal den lukkes ned, og det forekommer ret besværligt at skal lukke en database ned automatisk, komprimere den, for at starte den op igen. Ikke nok med det, så har jeg jo også en datakilde - en såkaldt ODBC connection til databasen, så man har ikke udelt adgang, medmindre ODBC programmet som kører sideløbende med den, lukkes ned.
DET NYE ER: lukkes det sidekørende program, og databasen for lov at køre uden de udefrakommende forstyrrelser, vokser den IKKE. Heller ikke selv om VBA koden stadig udføres hvert 10 sekund ??!?!?
Jeg roder videre med dcount problematikken, men jeg er begyndt at tvivle på en løsning, og det irriterer mig, når nu man ellers synes man har lavet en funktionel database.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.