2012-01-21 20 views
6

यहां मैं लिंक से एसक्यूएल के साथ काम कर रहा हूं, मेरे पास मेरी तालिका में 30000 पंक्ति है।लेनदेन (प्रक्रिया आईडी 56) लॉक पर deadlocked था?

मैं डेटाबेस से रिकॉर्ड प्राप्त करने में कठिनाई के लिए क्वेरी निम्नलिखित का इस्तेमाल किया:

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(); 
      } 

कुछ समय मेरी क्वेरी रन सफलतापूर्वक या कुछ समय मुझे मिल गया त्रुटि: लेन-देन (प्रक्रिया ID 56) ताला deadlocked किया गया था | संचार प्रक्रिया बफर संसाधनों को एक और प्रक्रिया के साथ चुना गया है और डेडलॉक पीड़ित के रूप में चुना गया है। लेनदेन फिर से करें।

अग्रिम धन्यवाद ...

+0

SQL सर्वर के त्रुटि लॉग में एक डेडलॉक प्रविष्टि होगी, क्या आप इसे पोस्ट कर सकते हैं? यदि नहीं, तो [traceflag 1204 या 1222] चालू करें (http://msdn.microsoft.com/en-us/library/ms178104.aspx) – Andomar

+0

क्वेरी कितनी देर तक चलती है? – RobJohnson

+1

SQL सर्वर का कौन सा संस्करण? [यदि 2008 देखें कि क्या आप डिफ़ॉल्ट विस्तारित ईवेंट सत्र से डेडलॉक ग्राफ प्राप्त कर सकते हैं] (http://dba.stackexchange.com/questions/10644/deadlock-error-isnt-returning-the-deadlock-sql/10646#10646)। अन्यथा अगली बार इसे कैप्चर करने के लिए सेट अप करें। –

उत्तर

2

ऐसा लगता है कि सामान्य गतिरोध एक साथ तालिका के साथ इस मुद्दे पर ताला लगा/स्कैन clustindex और अद्यतन/आपकी परिणामी क्वेरी पर और उसके paln पर हटाना

देखो है - अगर यह इस तरह है एक स्कैन - उचित अनुक्रमण के साथ इसे टालने का प्रयास करें या इसे उपयोग करने के लिए हैक (NOLOCK) संकेत। गतिरोध ग्राफ बिल्कुल नज़र का पहला - आप संभव प्रेत पंक्तियों

और बिना सटीक और सुसंगत डेटा की जरूरत है लेकिन NOLOCK संकेत अच्छा नहीं है!

संबंधित मुद्दे