Hej, allihop!
Jag får följande intressanta fel när jag kör SQL-uttrycket nedan mot en view:
---
SQL1: select title_id from p3525_titlesdata_bu_v where country=1 and round<=14 and (life between 12 and 15) and (genre not in(6,7)) group by title_id
Microsoft OLE DB Provider for SQL Server error '80004005'
Transaction (Process ID 147) was deadlocked on thread | communication buffer resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
---
Viewen är baserad på tre tabeller och har följande definition (håll i er :D):
---
SELECT dbo.p3525_titlesdata_bu.*, dbo.p3525_respondents_bu.Id AS rid, dbo.p3525_respondents_bu.age AS age, dbo.p3525_respondents_bu.bdvd AS bdvd,
dbo.p3525_respondents_bu.bvideo AS bvideo, dbo.p3525_respondents_bu.dvd AS dvd, dbo.p3525_respondents_bu.gender AS gender,
dbo.p3525_respondents_bu.own AS own, dbo.p3525_respondents_bu.price AS rprice, dbo.p3525_respondents_bu.watdvd AS watdvd,
dbo.p3525_respondents_bu.vcr AS vcr, dbo.p3525_respondents_bu.qs6aa_1 AS qs6aa_1, dbo.p3525_respondents_bu.qs6aa_2 AS qs6aa_2,
dbo.p3525_respondents_bu.qs6aa_3 AS qs6aa_3, dbo.p3525_respondents_bu.qs6ad_1 AS qs6ad_1,
dbo.p3525_respondents_bu.qs6ad_2 AS qs6ad_2, dbo.p3525_respondents_bu.qs6ad_3 AS qs6ad_3,
dbo.p3525_respondents_bu.qs6ad_4 AS qs6ad_4, dbo.p3525_respondents_bu.qs6ad_5 AS qs6ad_5, dbo.p3525_respondents_bu.qs6m AS qs6m,
dbo.p3525_respondents_bu.qs6t AS qs6t, dbo.p3525_respondents_bu.country AS country1, dbo.p3525_respondents_bu.qs8_1 AS qs8_1,
dbo.p3525_respondents_bu.qs8_2 AS qs8_2, dbo.p3525_respondents_bu.qs8_3 AS qs8_3, dbo.p3525_respondents_bu.qs8_4 AS qs8_4,
dbo.p3525_respondents_bu.qs8_5 AS qs8_5, dbo.p3525_respondents_bu.qs8_6 AS qs8_6, dbo.p3525_respondents_bu.q1dem_1 AS q1dem_1,
dbo.p3525_respondents_bu.q1dem_2 AS q1dem_2, dbo.p3525_respondents_bu.q1dem_3 AS q1dem_3,
dbo.p3525_respondents_bu.q1dem_4 AS q1dem_4, dbo.p3525_respondents_bu.q1dem_5 AS q1dem_5,
dbo.p3525_respondents_bu.q1dem_6 AS q1dem_6, dbo.p3525_respondents_bu.q1dem_7 AS q1dem_7,
dbo.p3525_respondents_bu.q1dem_8 AS q1dem_8, dbo.p3525_respondents_bu.q1dem_9 AS q1dem_9, dbo.p3525_respondents_bu.q2dem AS q2dem,
dbo.p3525_respondents_bu.q3dem AS q3dem, dbo.p3525_respondents_bu.q4dem AS q4dem, dbo.p3525_respondents_bu.q5dem AS q5dem,
dbo.p3525_respondents_bu.qs9_1 AS qs9_1, dbo.p3525_respondents_bu.qs9_2 AS qs9_2, dbo.p3525_respondents_bu.qs9_3 AS qs9_3,
dbo.p3525_respondents_bu.qs9_4_1 AS qs9_4_1, dbo.p3525_respondents_bu.qs9_4_2 AS qs9_4_2,
dbo.p3525_respondents_bu.qs9_4_3 AS qs9_4_3, dbo.p3525_respondents_bu.qs9_4_4 AS qs9_4_4,
dbo.p3525_respondents_bu.qs9_4_5 AS qs9_4_5, dbo.p3525_respondents_bu.qs9_4_6 AS qs9_4_6,
dbo.p3525_respondents_bu.qs9_1_uk AS qs9_1_uk, dbo.p3525_respondents_bu.qs9_1_ge AS qs9_1_ge,
dbo.p3525_respondents_bu.qs9_1_nl AS qs9_1_nl, dbo.p3525_respondents_bu.qs9_1_fr AS qs9_1_fr,
dbo.p3525_respondents_bu.qs9_1_it AS qs9_1_it, dbo.p3525_respondents_bu.qs9_1_sp AS qs9_1_sp,
dbo.p3525_respondents_bu.qs9_1_bl1 AS qs9_1_bl1, dbo.p3525_respondents_bu.qs9_1_bl2 AS qs9_1_bl2,
dbo.p3525_respondents_bu.qs6l1 AS qs6l1, dbo.p3525_respondents_bu.qs6l_1 AS qs6l_1, dbo.p3525_respondents_bu.qs6l_2 AS qs6l_2,
dbo.p3525_titles.category AS category, dbo.p3525_titles.nrcat AS nrcat, dbo.p3525_titles.box1 AS box1, dbo.p3525_titles.box2 AS box2,
dbo.p3525_titles.boxt AS boxt, dbo.p3525_titles.tmbudget AS tmbudget, dbo.p3525_titles.vmbudget AS vmbudget, dbo.p3525_titles.genre AS genre,
dbo.p3525_respondents_bu.q10 AS q10, dbo.p3525_respondents_bu.weight AS weight
FROM dbo.p3525_titlesdata_bu LEFT OUTER JOIN
dbo.p3525_titles ON dbo.p3525_titlesdata_bu.country = dbo.p3525_titles.country AND
dbo.p3525_titlesdata_bu.Title_id = dbo.p3525_titles.Title_ID LEFT OUTER JOIN
dbo.p3525_respondents_bu ON dbo.p3525_titlesdata_bu.country = dbo.p3525_respondents_bu.country AND
dbo.p3525_titlesdata_bu.round = dbo.p3525_respondents_bu.round AND dbo.p3525_titlesdata_bu.TId = dbo.p3525_respondents_bu.Id
---
Av vad jag förstått av felmeddelandet efter en del surfning är att detta uppkommer mest om man försöker skriva till en kolumn men så är ju inte fallet här. Felet kommer alltid på samma plats efter en stunds körning. Om jag gör en tabell av viewen så uppstår inte problemet.
Jag har helt enkelt inte en aning om var jag skall börja leta efter felet. Nycklar och index är definierade för alla tabeller.
Det kan förekomma andra som läser från samma view under tiden men det skrivs aldrig till tabellerna. För min del så verkar det vara fråga om ett timingrelaterat problem. Frågan är om det går att komma runt eller om jag måste göra en flat tabell av den varenda gång jag kör det här scriptet. Eller kan lösningen vara något som man kan ställa in i SQL-servern.
All hjälp är välkommen...