Avatar billede thomas_regin Nybegynder
26. september 2001 - 12:38 Der er 18 kommentarer og
1 løsning

SQL Server crasher efter DELETE!

Hejsa!..

Jeg har et meget irriterende problem, når jeg prøver at delete/inserte i min SQL server gennem ASP!

Problem-stillingen er flg.:

Jeg kører et script, hvor jeg først fjerner ALT fra 3 tabeller (DELETE FROM MY_TABLES WHERE ID > \'0\')

Derefter haster jeg videre til en anden tabel og siger: SELECT * FROM THIS_TABLE

Jeg genererer nu et loop, hvor jeg fylder data ind i de 3 tabeller jeg slettede i starten af scriptet(oversat til børnesprog):

DO WHILE RECORDS IN OTHER_TABLE NOT END OF FILE

PUT STUFF IN MY_TABLE
PUT STUFF IN MY_TABLE2
PUT STUFF IN MY_TABLE3

LOOP

Hvis der er fejl i SQL\'en skriver den fejlen ud:

IF ERR.Number <> \'0\' then
Response.Write err.description
Else
Response.Write \"OKAY\"
End If

Problemet er, at dette virker rent kodemæssigt - og det er lynhurtigt!.. Det er SQL-server, der crasher. Den bruger ca. 15 minutter på at stå og tænke, alt imens mine webpages ikke kan vises, hvorefter den melder \"Timeout Expired\" fra Enterprise Manager. IKKE fra ASP! Derefter virker alt igen, og når jeg kører rutinen igennem igen er der ingen problemer! Laver jeg en lille ændring til et af punkterne i \"OTHER_TABLE\", så skal jeg igennem samme ventetid/problemer igen. Derefter er der ingen problemer!

Hvor ligger fejlen???..

Jeg håber at i kan hjælpe!

Med venlig hilsen,

Thomas Regin.
Avatar billede slash Nybegynder
26. september 2001 - 12:41 #1
Det lyder suspekt! Er der problemer med locks - har du evt. deadlocks??
Avatar billede pierrehusted Nybegynder
26. september 2001 - 12:42 #2
Måske kan det hjælpe at TRUNCATE de tabeller der skal slettes i stedet for at bruge DELETE. SÅ bliver der ikke lagt nær så meget i TRANSACTION LOGen. Det kan nok hjælpe serveren lidt.
Avatar billede thomas_regin Nybegynder
26. september 2001 - 12:56 #3
Pierrehusted,

Kan jeg \"truncate\" on-the-fly direkte fra koden??.. Problemet er, at jeg ikke får hands-on rettighed til at truncate tabellerne, når først sitet er live. Derfor må, og skal jeg, finde en løsning på problemet, før vi går live!

Slash,

Nej!.. Ingen deadlocks eller andre mystiske ting. Det er desuden en næsten ny SQL server 2000 installation på Win2K Server og IIS5.0!

Jeg forstår det ikke!!.. Jeg har lavet usandsynligt mange funktioner som denne uden problemer!.. :(

Med bekymrede hilsner,

Thomas Regin.
Avatar billede pierrehusted Nybegynder
26. september 2001 - 13:19 #4
Hvis du ikke får rettighed til at truncate på live sitet, så er det jo ligegyldigt at kigge nærmere på det.  :-(

Er det meget store datamængder/indexer ??    Når du bruger DELETE skal den jo (så vidt jeg ved) skrive en post i TRANSACTION LOG for hver post der slettes. Og der skal også rettes i indexer for hver post der slettes.

Sjov ide :  Hvad med at fjerne evt. indexer inden du sletter postern, og så sætte det på igen når tabellen er tom ???
Avatar billede thomas_regin Nybegynder
26. september 2001 - 13:50 #5
Pierrehusted,

Jeg har naturligvis administrator-ret til alt hvad jeg har lyst til, både når sitet er live og i test på min lokale maskine her, men problemet er, at jeg helst vil have alting til at køre fuldstændigt uden nogensinde at skulle ha\' hænderne nede i den database jeg har kørende live. Altså, hvis jeg kan undgå det!.. :)

Det drejer sig om ca. 8 linier i hver af de 3 tabeller der bliver slettet, så det kan ikke rigtigt betragtes som værende store datamængder!

Jeg ville gerne ha\' lavet hele funktionen som en UPDATE routine uden at skulle slette indholdet først, men problemet er, at jeg ikke kan holde styr på de værdier og ID\'er jeg får fra \"hoved-tabellen\", som jeg kopierer fra. Derfor sletter jeg alt indholdet fra de 3 tabeller. Det kan være, at jeg skal lave en \"DROP\" istedet for, men giver det ikke anledning til endnu flere muligheder for fejl??..

Thomas.
Avatar billede pierrehusted Nybegynder
26. september 2001 - 14:02 #6
8 poster ????  Nej, det er godt nok ikke ret meget!!

Så fatter jeg slet ikke at den kan hænge så længe på det....  har du prøvet den samme kode på en anden maskine ??
Det kan jo være at maskinen er itu.


Hvis du vælger at droppe, så er der jo ingen tabeller indtil de er dannet igen. Og så virker ingen sider imens...
Avatar billede thomas_regin Nybegynder
26. september 2001 - 14:22 #7
Pierrehusted,

Hvis jeg vælger at \"DROP\"\'e tabellerne, så havde jeg jo naturligvis tænkt mig at \"CREATE\" dem lige efter igen!.. :)

Jeg giver dig fuldstændigt ret i, at 8 poster ikke er meget, når man tænker på, at SQL-server efter sigende er næsten grænseløs(Hvilket den dog ikke er)..

Jeg er fuldstændigt tom for idéer. Det er ikke maskinen. Det er en helt ny DELL 1700Mhz Pentium4 med 512MB RAM og en splinterny installation af WIN2K Server. Der har aldrig været problemer med den før!

Mvh.

Thomas.
Avatar billede pierrehusted Nybegynder
26. september 2001 - 14:24 #8
Kan du ikke lige prøve koden på en anden maskine ??  Det kan være at der er et eller andet underligt loop i din kode....
Avatar billede thomas_regin Nybegynder
26. september 2001 - 15:21 #9
Pierrehusted,

Nu smed jeg sitet over på en anden server, og sjovt nok er der INGEN problemer!..

Jeg vil nu stadig meget gerne finde ud af hvorfor jeg oplevede fejl på min egen server, men pointene skal du ha\' uanset hvad!.. Kan du ikke lige lave et \"Svar\" ?

Tak for hjælpen!!

Thomas.
Avatar billede pierrehusted Nybegynder
26. september 2001 - 15:23 #10
OK......
Avatar billede torbenkoch Nybegynder
26. september 2001 - 18:36 #11
Kunne være interessant, at se, hvad der kom ud af at køre SQL Profiler imens den laver disse \"stunts\" - det skulle nok kunne give nogle hints.

Umiddelbart lyder det så ganske afgjort som et deadlock problem - det er typisk det eneste, der kan få den til at hænge så uhæmmet. Men de kan være svære at finde. Du kan sætte Performance Monitor på, den kan vise deadlocks, så kan du i hvert fald se, om der er nogle.

Når/hvis du finder løsningen, så vil jeg meget gerne høre om det - det er sådan noget, man gerne vil vide noget om, når man selv havner i situationen...!
Avatar billede thomas_regin Nybegynder
27. september 2001 - 09:27 #12
Torben,

Du har fuldstændigt ret i, at det lyder som en deadlock, men jeg synes jeg plejer at få en fejl, når SQL-serveren går i deadlock.. Det sker heldigvis ikke så ofte!.. Jeg skal nok, hvis jeg nogensinde finder fejlen, poste løsningen herinde!

Tak for hjælpen til jer alle!

Thomas Regin.
Avatar billede big-ben Nybegynder
08. november 2001 - 18:29 #13
Har noget lignede samme problem - det er dybt mystisk.

Jeg får en timeout på den samme update HVER gang jeg køre den, jeg kan fint indsætte 30 records, og update dem, men når jeg så når til den næste update dør den.

Jeg har haft problemer med det 2 gange nu, i begge tilfælde på en Windows 2000 maskine med MS SQL 2000 SR-1.

I et af tilfældene dør den når den når over 20 records.

Hvis jeg kopiere update sætningen direkte ind i Enterprise manageren, spiser den den uden problemer.

Hvis MYSQL havde en transaction server, så havde MS fået fingeren for lang tid siden.
Avatar billede torbenkoch Nybegynder
08. november 2001 - 18:39 #14
Hvilken version af MDAC bruges der? Hvilken klient er det? IIS? På samme maskine?
Avatar billede big-ben Nybegynder
08. november 2001 - 18:55 #15
Det er fra ASP som køre på en Windows 2000 SR-1 med IIS 5.0, database serveren er den dedikeret server.

Begge maskiner er med alle windows updates.
Avatar billede big-ben Nybegynder
08. november 2001 - 18:56 #16
..jeg mistænker lidt SR-1 for at lave noget gøjl.
Avatar billede torbenkoch Nybegynder
08. november 2001 - 19:00 #17
Har du prøvet profileren? Den kan altså nogle gange give - om ikke svaret - så i hvert fald nogle ledetråde! For mig er den et fuldstændigt uundværligt værktøj i den slags situationer.
Avatar billede big-ben Nybegynder
08. november 2001 - 19:24 #18
hmm.. har ikke rodet med den før, virker kewl!
tjekker lige status op.
Avatar billede big-ben Nybegynder
08. november 2001 - 19:39 #19
Efter den update der går galt, begynder der at komme nogle entries fra SQLagent -Alert Engine, på SYSTEM user.
kan ikke lige gennemskue den.
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
Computerworld tilbyder specialiserede kurser i database-management

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