Hej! Hej! Tack!Felmeddelande när jag kör mot en vy
Jag är en entusiastisk användare av T-SQL men på amatörnivå. Jag har nu stött på följande problem:
Följande script fungerar som det ska mot tabellen ind_tab och ger ett korrekt resultat enligt nedan
Select mynd1,rednr, count(*) as 'antal'
from dbo.ind_tab
where mynd1=410
group by mynd1,rednr
order by mynd1,rednr
Svar:
mynd1 rednr antal
410 1072 107
410 1230 34
410 1511 91
410 1512 604
410 1514 55
410 1521 231
410 1555 162
410 1556 93
410 1562 302
410 1601 90
410 1621 278
410 1622 76
410 1690 707
410 1841 186
410 1842 191
410 1843 183
410 1845 530
410 1848 231
410 1940 22
410 1941 138
410 2040 306
410 2160 416
När jag kör exakt samma script mot vyn vy_ind_tab får jag följande felmeddelande:
Select mynd1,rednr, count(*)
from dbo.vy_ind_tab
where mynd1=410
group by mynd1,rednr
order by mynd1,rednr
Felmeddelande:
Server: Msg 8650, Level 13, State 127, Line 1
Intra-query parallelism caused your server command (process ID #53) to deadlock. Rerun the query without intra-query parallelism by using the query hint option (maxdop 1).
Vad betyder detta felmeddelande? Om jag modifierar scriptet enligt nedan eller skriver
where-satsten som 'where mynd1 like 410' fungerar det
Select mynd1,rednr, count(*) as 'antal'
from dbo.vy_ind_tab
where mynd1 in(410,717)
group by mynd1,rednr
order by mynd1,rednr
Svar:
mynd1 rednr antal
410 1072 107
410 1230 34
410 1511 91
410 1512 604
410 1514 55
410 1521 231
410 1555 162
410 1556 93
410 1562 302
410 1601 90
410 1621 278
410 1622 76
410 1690 707
410 1841 186
410 1842 191
410 1843 183
410 1845 530
410 1848 231
410 1940 22
410 1941 138
410 2040 306
410 2160 416
717 4980 60
Tacksam för hjälp med detta för mig stora mysterium
/Ann-LouiseSv: Felmeddelande när jag kör mot en vy
Du har förmodligen en dator med Hyperthreading. Det skulle man kunna stänga av för att det gynnar inte SQL Server - snarare tvärtom.
Det som händer är att SQL delar upp frågan på 2 processorer (fast den har en...) och då kan det li så att den råkar läsa samma data 2 gånger samtidigt.
Man löser det genom att skriva om frågan - som du redan testat, eller genom att skriva
OPTION (MAXDOP 1) i slutet. Då anger man att den inte skall ta fram en parallell-plan,
som är orsaken till ditt strul.
/mickeSv: Felmeddelande när jag kör mot en vy
Jag var mest orolig för att det kunde vara något fel med vyn som jag skapat. Detta besked besparade mig ett fruktlöst letande efter ett sådant fel.
/Ann-Louise