Avatar billede Slettet bruger
09. februar 2004 - 11:23 Der er 13 kommentarer og
1 løsning

Nedbrud af servere pga databaser

Jeg har lige et spørgsmål, som forvirrer mig meget.

Jeg har en hjemmeside liggende på en server, som konstant ryger ned i perioder, fordi min access-database åbenbart overbelaster serveren.

Problemet er, at efter folk har navigeret rundt på hjemmesiden (og derfor benyttet sig af databasen), så bliver databasen i sidste ende låst. På serveren oprettes en fil til ved siden af databasen:

database.ldb

og i forvejen findes filen:

database.mdb

Dvs når balladebase.ldb kommer frem, så kan database.mdb ikke benyttes, da balladebase.ldb låser den. Begge filer bliver pludselig skrivebeskyttede, og jeg kan hverken slette dem, skifte navn på dem eller overskrive dem. De er helt uberørlige.

Derudover, så går hjemmesiden også fuldstændig i stå. Den er ikke til at navigere på, og vores webhotel-udbyder fortæller, at det er serveren der går ned. Serveren har det ellers helt 100% fint, når min hjemmeside deaktiveres. Vi har også fået lov til at blive flyttet til en anden server, for at se om problemet fortsatte - og det gjorde det.

Er der nogen der ved hvad det kan skyldes? Er det en fejl i mine connection-koder? Og i såfald, hvilken fejl skulle det så være? Kan man virkelig få databasen til at gå i baglås og trække serveren med pga nogle koder?

Håber virkelig at nogen har et svar på det.
Avatar billede terry Ekspert
09. februar 2004 - 12:04 #1
database.ldb WILL exist when the database database.mdb is in use! It contains information on who is using the dB! Normallyit will get removed when all users close their connections.

It is important that connections are closed AS SOON as you have finished using the dB.
Avatar billede terry Ekspert
09. februar 2004 - 12:08 #2
It iS NOT database.ldb which is giving this problem! Only open a connection to the dB when you need to read/write. Close it as soon as you are finished.
Avatar billede Slettet bruger
09. februar 2004 - 12:27 #3
terry, the problem is that I cannot close or open the database on the server.

When I upload the database to the server, it is being used by the our users who navigate on the site. After a while the database will be opened on the server, probably because some users are currently using it on the website - but that shouldn't be able to open it in the first place.

The answer must be that the database keeps opening itself by some strange reason. I am not the person who opens and closes it. In fact, I'm not even able to delete, rename og overwrite the database on the server when it is busy/opens itself. I can't even delete the ldb-file. After some minutes, while the ldb-file exists, the server crashes.
Avatar billede terry Ekspert
09. februar 2004 - 12:47 #4
I dont have much experience with web based applications and Access, so I can only give some indications as to what could be the problem.

Normally you should NOT try and overwrite the database IF users are using it. If I understand your comment then this is waht you are attempting to do. "When I upload the database to the server, it is being used by the our users who navigate on the site"!!!

All users should exit teh application when you upload a new dB! When they exit the application all connections should if th eprogram is made correctly, get closed. When all connections are closed the database.ldb file should get removed automatically.

Whan all users have stopped using the dB you can now overwrite the existing db! NOT BEFORE!
Avatar billede overchord Nybegynder
09. februar 2004 - 12:51 #5
Ligger der evt noget i databasen som kan medfoere af db'en "aabnes" f.eks forms, moduler eller lignenede?
Har du dobbeltchekket at dine asp-koder alle lukker connection efter hver kontakt til databasen?  Og evt checket session time-out?
Avatar billede Slettet bruger
09. februar 2004 - 13:08 #6
Terry, the server is built that way. When you delete or overwrite the database, the persons who are using it will be rejected. They are only using it through the internet.

Overchord, det er når der navigeres på siden. Databasen er konstant i brug - min webhotel-udbyder fortalte, at det nok er nogle scripts der er i konflikt med hinanden. Jeg har nemlig to hjemmesider på serveren, og den første (den som har problemer med access) er den som jeg begyndte at programmere ASP på. Den nye har ingen problemer, og det er nok fordi det er et mere konstrueret sprog, som er bygget op på erfaringer - i modsætning til den der har problemer.

Jeg kan ikke overskue fejlen lige nu, så jeg er nok nødt til at re-designe hele siden med min nuværende erfaring. Der er ikke så meget andet at gøre.
Avatar billede terry Ekspert
09. februar 2004 - 13:35 #7
Without any knowledge of HOW the server is buildt, you can NOT just overwrite a fiel which is in use WITHOUT consequences! The users may only be accessing the database through the internet but it is HERE where teh connections are getting created. So when you FORCE another file over the existing then you are ASKING FOR TROUBLE!
Avatar billede hekla Nybegynder
09. februar 2004 - 14:03 #8
Prøv at se, hvordan connections i dine asp-scripts er lavet, og lav dem på samme måde, som på hjemmesiden, der fungerer. Husk at slutte asp-scriptet med Connection.Close
Avatar billede Slettet bruger
09. februar 2004 - 15:25 #9
Hekla: Kan jeg bare smide Connection.Close allernederst på siden? Og hvis der er flere connections der er åbnet på samme tid, vil de så også lukke, bare ved at skrive Connection.Close i bunden?

terry: I don't think you understand what I am saying. When users access the database through the Internet, the database will not get busy. They only request some information, through the website, to be shown on the current site they are on. It's only an output they get, nothing else.

So, you could probably say that it is not them who use the database, but the website itself in order to show the content of the tables. When I overwrite og delete the database, the website will no longer be able to establish a connection with the database, and therefor the users will be rejected by the website.

In that case, it doesn't make sense that the database is opened on the server, absolutely the same way when you open it on your own computer. That shouldn't be possible at all.
Avatar billede hekla Nybegynder
09. februar 2004 - 16:10 #10
Nej du skal lukke hver enkelt connection, når der er hentet noget fra databasen. Hvis du ikke lukker dem, vil du få flere og flere åbne connections indtil serveren bryder sammen!
Avatar billede Slettet bruger
09. februar 2004 - 16:17 #11
hekla: Det vidste jeg faktisk ikke - det er helt sikkert grunden til at problemet er opstået.
Er der ikke et script der kan lukke dem ned allesammen på én gang?
Avatar billede hekla Nybegynder
09. februar 2004 - 16:22 #12
Så vidt jeg ved, kan det kun gøres "The hard way", én af gangen, men jeg er ikke ekspert på området.
Avatar billede terry Ekspert
09. februar 2004 - 18:49 #13
aliaarhus>Dont understand why hekla gets the points here, I've been trying to tell you that yopu have to close the connection from the first answer/comment I gave! 09/02-2004 12:04:59
Avatar billede terry Ekspert
10. februar 2004 - 15:03 #14
!
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester