2012-01-21 18 views
6

Burada sql için Linq ile çalışıyorum Tabloda daha sonra 30000 satır var.İşlem (İşlem Kimliği 56) kilit üzerinde kilitlendi mi?

ben veritabanından kayıt alma için sorgu aşağıdaki kullanılan:

IEnumerable<DealsDetails> DD = (from D in DealDbContext1.Deals 
              where D.Address == City && (D.DealTime >= DateTime.Now || D.DealTime == dealcheck) && PriceMax >= D.DealPrice && D.DealPrice >= PriceMin && DisCountMax >= D.SavingsRate && D.SavingsRate >= DiscountMin && (D.DealTime >= DateTime.Now.AddDays(TimeMin) && D.DealTime <= DateTime.Now.AddDays(TimeMax) || D.DealTime == dealcheck) 
              select new DealsDetails(
               lst, 
               D.DealId, 
               D.DealHeadline, 
               D.DealCategory, 
               D.BuyPrice, 
               D.DealPrice, 
               D.SavingsRate, 
               D.SavingAmount, 
               D.RelatedWebsite, 
               D.Address, 
               string.Empty, 
               D.DealImage, 
               string.Empty, 
               string.Empty, 
               D.Time, D.CurrentTime, D.DealTime, 
               D.Location, string.Empty, string.Empty, D.Latitude, D.Longitude, D.Islocal, D.VendorMail, D.MerchantInfo, D.Review, D.HowItWork, D.DealUrl 
               )); 



if (lstSite.Count > 0 && lstSite[0] != "AllDeals") 
       { 
        DD = DD.Where(D => D.RelatedWebsite.Split(',').Where(x => lstSite.Contains(x)).Any()); //.Where(row => row.Category.ToList().Where(x => lst.Contains(x)).Any()).ToList(); 
      } 

Bir süre benim sorgu başarıyla koşmak ya bende biraz zaman Hata: İşlem (Process ID 56) kilit deadlocked | haberleşme arabelleği kaynakları başka bir süreçle ve deadlock kurbanı olarak seçilmiştir. İşlemi tekrar çalıştırın. Böyle varsa - Eğer genel kilitlenme tarama ve güncelleme/sonuçta belirlenen sorguda ve paln de

bak silmek clustindex/eşzamanlı tabloyla sorunu kilitleme var gibi önceden

Teşekkür ...

+0

SQL Server'ın hata günlüğünde bir kilitlenme girdisi olacak, bunu gönderebilir misiniz? Değilse, [traceflag 1204 veya 1222] 'yi açın (http://msdn.microsoft.com/en-us/library/ms178104.aspx) – Andomar

+0

Sorgu ne kadar sürüyor? – RobJohnson

+1

Hangi SQL Server sürümü? [Eğer 2008'in varsayılan uzatılmış etkinlik oturumundan çıkmaza girme grafiğini alabilirseniz bakın] (http://dba.stackexchange.com/questions/10644/deadlock-error-isnt-returning-the-deadlock-sql/10646#10646). Aksi takdirde bunu bir dahaki sefere yakalamak için ayarlayın. –

cevap

2

görünüyor Bir tarama - doğru indeksleme ile kullanmayı deneyin veya kullanmak (NOLOCK) ipucu kullanmak için kesmek. kilitlenme grafiğe tüm görünüm ilk - Mümkün hayali sıralar

Ve olmadan kesin ve tutarlı veri gerekiyorsa Ama nolock ipucu iyi değil!

İlgili konular