Avatar billede troelsm Nybegynder
06. januar 2007 - 17:43 Der er 6 kommentarer og
1 løsning

Timeout error på simpel Update i en Do until løkke mod SQL

Jeg får en mærkelig Timeout error når jeg forsøger at benytte nedenstående Do until.
Fejlen opstå allerede første gang der er en post der skal opdateres.
Jeg synes aldrig før jeg har haft problemer med dette - har lavet mange af disse (hvor jeg løbe et record set igennem og opdatere i det samme record ser) - men denne her er en gåde for mig...
Nogen som kan se hvad der kan være galt.... eller evt. hvad jeg kan prøve at rette for at se om fejlen forsvinder.

- - - - - - - - - - - - - - -
  strSQL = "SELECT DatoID, Feriedato, Status FROM Feriedatoer where Feriedato >= '" & nydag & "' and PilotID = " & id & " ORDER BY DatoID"
'  rs.Open  strSQL, conn
  Set rs = conn.Execute(strSQL)

' Variabler
  findfirst     = 0
  f_update     = 0
  no_update     = 0
  check     = 0

Do Until rs.EOF

IF findfirst = 0 then
    findfirst = 1
END IF

IF findfirst = 1 AND check = 0 THEN
  IF INT(f_update) < INT(ny_fri) THEN
    f_update = f_update + 1
    SQLstmt = "UPDATE Feriedatoer SET Status = 'F' WHERE DatoID = " & rs("DatoID")

' **** HER VED conn.excute kommer fejlen første gang....
  response.write "<br>" & SQLstmt
    Conn.Execute (SQLstmt)

    if f_update = 1 THEN
      sidsteFdag = rs("Feriedato")
    end if
  ELSE
  no_update     = 0
  check     = 1
  END IF
END IF

..
der er mere kode her men den kommer aldrig hertil
..

rs.Movenext
loop
Avatar billede erikjacobsen Ekspert
06. januar 2007 - 18:58 #1
Jeg ville kigge efter en rs.movenext
Avatar billede erikjacobsen Ekspert
06. januar 2007 - 19:00 #2
Nå, jeg læste ikke det der stod allernederst. Jeg stoppede ved "der er mere..."  ;)
Men kommer din timeout første gang din conn.execute udføres?
Avatar billede troelsm Nybegynder
06. januar 2007 - 19:17 #3
ja første gang den ramme en post der skal opdateres kommer timeout...

- - -
UPDATE Feriedatoer SET Status = 'F' WHERE DatoID = 824696
Microsoft OLE DB Provider for SQL Server error '80040e31'

Timeout expired


- - -
Avatar billede erikjacobsen Ekspert
06. januar 2007 - 19:21 #4
Hvilket databasesystem? Er der et index på DatoID? Og er der tæt på en million rækker, eller flere?
Avatar billede troelsm Nybegynder
06. januar 2007 - 19:29 #5
Det er SQL server 2000 og ja der er index på DatoID - men der er kun ca. 500.000 rækker,

men for nu har jeg fundet et fix.
Normalt bruger jeg i min Connection streng et
Data Source = .
men når jeg skifter dette til local IP adressen så virker det perfekt,
så hun står der Data Source = xxx.xxx.xxx.xxx
hvorfor ved jeg ikke for det virker perfekt med . på min udviklingsserver - det er kun på produktionsserven den "skaber" sig...
Avatar billede erikjacobsen Ekspert
06. januar 2007 - 19:41 #6
Det ku' være indstilling for låsninger, der er forskellig. Du har lige læst den samme post som du skal opdatere (hvis jeg læser din kode korrekt). Når du så skal skrive i den, er den låst fra læsningen.

Jeg gør tit det (men jeg må indrømme at det er bøvlet i ASPs VBScript) at samle data fra SELECT-en i et passende array eller lignende, lukke recordsettet, og så løbe arrayet igennem med henblik på hvad der så skal ske med det. Det er der flere fordele ved. (Men der er også fordele ved at droppe gammeldags ASP...)
Avatar billede troelsm Nybegynder
12. december 2007 - 18:19 #7
Lukning
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
Kurser inden for grundlæggende programmering

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

IT-JOB

Unik System Design A/S

Agile QA Lead

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger IT-supporterelever til lokal IT på Vordingborg Kaserne

Epona A/S

Senior Developer

Capgemini Danmark A/S

Open Application (Denmark)