30. april 2008 - 16:43
Der er
16 kommentarer
Flere insert-sql'er
Hej Jeg har brug for at køre, måske, 500 forskellige sql-sætninger op mod en MSSQL. Jeg oplever et timeout - og har forsøgt at sætte scripttimeout op... Er der mon noget jeg kan gøre?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
30. april 2008 - 16:46
#1
Du kunne måske opdatere siden efter hver 10. SQL-sætning eller noget i den stil? Så når de første 10 er kørt, linker du måske til siden.asp?sql=20 og derefter siden.asp?sql=30
30. april 2008 - 16:46
#2
Så har du også mulighed for at vise brugeren, hvor mange procent, der er kørt.
30. april 2008 - 16:52
#3
Du har f.eks. prøvet: Server.ScriptTimeout = 1000 ?
30. april 2008 - 16:52
#4
(I toppen af koden altså.)
30. april 2008 - 17:18
#5
jeps... jeg har prøvet med server.scripttimeout - desværre virkede det ikke jeg tror måske det er noget med at jeg åbner for mange forbindelser eller så'n noget... er der andre muligheder end at reloade siden?
30. april 2008 - 18:06
#6
Det kan da også være, din kode bare skal bygges lidt smartere op. Har vi mulighed for at se den?
30. april 2008 - 18:44
#7
Som hovedregel behøver du jo kun åbne én forbindelse. Alle inserts executes så på denne forbindelse!
30. april 2008 - 21:33
#8
du har nok et loop, der kører evigt. - og som bondester skriver behøver du kun at åbne et forbindelse. har siden nogensinde virket? kommer der en fejlmeddelelse?
hej jeg kan desværre ikke smide min kode afsted til jer - beklager jeg laver en select, for derefter at lave nogle inserts inde i denne... koden har tidligere virket - dog meget langsomt, men uden at timeoute er det måske et spørgsmål om at samle samtlige insert sætninger sammen, og så køre dem bagefter de er dannet - altså udenom select-sætningerne.?
Det er meget svært at hjælpe uden at se, hvordan du gør. Som bondester skriver: opretter du forbindelse til databasen flere gange? For det skal man jo bestemt undgå.
jeg tror ikke jeg opretter forbindelse flere gange - jeg brugere bare conn.execute(sql) for alle mine sql's er der noget der skal lukkes der?
Nej, det er sådan, man bør. Henter du data med dem eller hvordan? F.eks. "SELECT * FROM..." ?
jeg både henter og skriver data... henter nogle kunder ind i et recordset - henter nogle data pr. kunde, og skriver derefter nogle ting ned i databasen...
Det vigtige er at din "Set Conn = Server.CreateObject("ADODB.Connection")" er udenfor din DO-LOOP og kun dine Conn.Execute("SQL-Insert-koden") er indenfor... Kan du ikke bare vise os den del af koden??
hej bondester... jeg kan desværre ikke fremvise koden - men jeg creater objektet allerførst - for derefter at køre de forskellige executes...
Husk også, at du aldrig skal bruge "SELECT *" medmindre du vitterligt vil hente _alle_ felterne. Hvis du kun skal bruge nogle af dem, _bør_ du skrive "SELECT felt1,felt2,felt3...", da det vil øge performance.
Kurser inden for grundlæggende programmering