FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Klarade millennium-buggen
|
Har ett problem, och jag är ingen expert på att varken administrera eller sätta upp sqlservers så håll i er.
Sitter hos en kund och försöker få en "stored procedure from hell" att fungera enligt några väldigt små ändringar jag har gjort; så små att de inte på något sätt bör ha påverkat sp'n att bli väldigt "skakig"... Nu är det så att tex @@rowcount har slutat att fungera(!) (den ger 0 i svar oavsett vad tex selecten ovanför ger i svar), vad kan det bero på? Finns det någon inställning för detta på en db, eller i sp'n? Observera att jag är inte ensam om att hacka på den här servern så jag har ingen koll på om någon annan har gjort någon ändring, därav frågan. Dessutom så verkar det spöka lite allmänt i sp'n (började för några dagar sedan). Jag har tex en debugg som skriver ut en variabel (ett datum) som plockas från en tabell med en simpel select. Varje gång jag kör hela sp'n i Query Analyzern så plussas datumet på 1 dag i result-fönstret (dvs min variabel), men hur i helskotta kan sp'n komma ihåg föregående datum? Observera att datumet i tabellen är oförändrat. Datumet som skrivs ut i debuggfönstret ligger nu 1 månad efter det datum som står i tabellen...gissa om detta har jävlats med min debugging av sp'n... =( Skulle kunna svära på att den kör emot någon temptabell pga någon commit som inte görs, men så verkar inte vara fallet. Så här börjar och slutar koden (om det skulle ha något med commiten att göra): Kod:
CREATE PROCEDURE dbo.blablabla ...deklarationer av variabler... set nocount on begin transaction ...här kommer all sql i sp'n... ...sist kommer en liten errorhandler... errh: if @ok=0 rollback transaction else commit transaction set nocount off GO Jag börjar bli gråhårig... |
|||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Mycket flitig postare
|
Min erfarenhet är att man av misstag kör en annan SP med samma namn men en annan owner. Sånt kan spöka. dvs att du skapar en sp som dbo.blablabla, men att det finns en annan som heter somotheruser.blablabla.
men den lilla kod du klistrat in skulle inte påverka något som den ser ut. |
||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Klarade millennium-buggen
|
Hmmm, anta att jag skulle starta en transaction men inte göra varken en rollback eller commit... hur länge "lever" den egentligen?
Hade en teori om att det skulle kunna vara en äldre misslyckad körning av en sp som ligger och spökar, speciellt när alla @@ variablar verkar leva sitt eget liv (kanske mot en temptabell som är resultatet av en transaction som inte blivit commitad eller rollbackad?) Har haft queryanalysern öppen i ca 3 veckor för jag orkar inte spara ner de miljoner sqlsatser som ligger i queryfönstret.. =) |
|||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Mycket flitig postare
|
ja kanske kan det spöka.
En transaktion borde ju comitas när connectionen stängs, men har du QA öppen så stängs de väl inte... Och din lathet är ju bara dumdristig. Varför inte spasa SQL satserna och testa istället för att grubbla... ![]() |
||
![]() |
![]() |
Svara |
|
|