11. juli 2004 - 20:44Der er
7 kommentarer og 1 løsning
problemer med afvikling af kode i et sqlserver job
Jeg har et problem med følgende kode:
print 'Kontrollere databasens tilstand' alter database cherry set single_user with no_wait set @checkdb = @@error if @checkdb > 0 begin print 'Der er brugere i databasen, fortsætter uden kontrol af databasen' end else begin dbcc checkdb ('cherry', REPAIR_REBUILD) with NO_INFOMSGS if @@error > 0 begin set @fejl = @@error print 'Databasen er blevet markeret dårlig af systemet... der vil IKKE blive taget nogen backup' ALTER DATABASE cherry SET MULTI_USER return end else begin print ' databasen er blevet kontrolleret og er fundet fejlfri ' ALTER DATABASE uniksys SET MULTI_USER end end
!! herefter fortsætter koden!!
Fyre jeg dette af i qa, så fungere det perfekt. Er der noget der hænge databasen op, så kommer den med følgende svar :
"Server: Msg 5070, Level 16, State 2, Line 31 Database state cannot be changed while other users are using the database 'uniksys' Server: Msg 5069, Level 16, State 1, Line 31 ALTER DATABASE statement failed."
og fortsætter med at skrive mine print statements ud, og fortsætter med at afvikle koden.
smidder jeg så alt dette ind i en sp, og laver et enkelt job, som skal afvikle det, så når den får samme svar som beskrevet oppe over (msg 5069 & 5070), så terminere den, og afvikler ikke mere kode. her ville jeg gerne have at den fortsatte lige som den gør i qa. Ville være fantastisk hvis der var nogen som kunne hjælpe..
Du har ret, den afvikler koden nu. Jeg forstår bare ikke hvad der sker. Efter den har rullet tilbage, går den ind og kører dbcc checkdb, og efter dette returnere den @@error = 0 ?? hvordan kan det være når der stadigvæk er brugere i db'en ??. Og ruller man tilbage, er der så en måde man kan kontrollere om skiftet til single user mode er gået godt? Ellers kan man jo ikke rigtig styre koden hvad den så skal gøre, og så vil den jo i dette tilfælde altid køre checkdb. Hvis du kan svare på noget af dette ville jeg blive meget glad, og give dig point'ne. Tak for hjælpen indtil videre.
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.