Tutaj pracuję z Linq do sql Mam więcej niż 30000 wiersz w mojej tabeli.Transakcja (identyfikator procesu 56) została zablokowana na kłódce?
użyłem następujące zapytanie do pobierania rekordów z bazy danych:
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();
}
jakiś czas mój bieg zapytania pomyślnie lub jakiś czas mam Błąd: transakcji (Process ID 56) został zakleszczony na zamek | buforuje zasoby komunikacyjne innym procesem i została wybrana jako ofiara zakleszczenia. Ponownie uruchom transakcję.
góry dzięki ...
Pojawi się zakleszczenie wpisu w dzienniku błędów programu SQL Server. Czy możesz to opublikować? Jeśli nie, włącz [traceflag 1204 lub 1222] (http://msdn.microsoft.com/en-us/library/ms178104.aspx) – Andomar
Jak długo trwa wykonywanie zapytania? – RobJohnson
Jaką wersję programu SQL Server? [Jeśli w 2008 zobaczymy, czy można uzyskać wykres zakleszczenia z domyślnej sesji zdarzeń rozszerzonych] (http://dba.stackexchange.com/questions/10644/deadlock-error-isnt-returning-the-deadlock-sql/10646#10646). W przeciwnym razie skonfiguruj, aby zrobić to następnym razem. –