2012-01-21 7 views
6

Aquí estoy trabajando con Linq a sql Tengo más de 30000 fila en mi tabla.La transacción (ID de proceso 56) se bloqueó en el bloqueo?

utilicé siguiente consulta para ir a buscar la base de datos de registro:

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

algún tiempo mi consulta se ejecutan correctamente o algún tiempo llegué error: transacción (ID de proceso 56) fue un punto muerto en la cerradura | recursos de búfer de comunicación con otro proceso y se ha elegido como la víctima de interbloqueo. Vuelva a ejecutar la transacción.

Gracias de antemano ...

+0

Habrá una entrada de interbloqueo en el registro de errores de SQL Server, ¿podría publicar eso? De lo contrario, active [traceflag 1204 o 1222] (http://msdn.microsoft.com/en-us/library/ms178104.aspx) – Andomar

+0

¿Cuánto tarda la búsqueda en ejecutarse? – RobJohnson

+1

¿Qué versión de SQL Server? [Si 2008 ve si puede obtener el gráfico de interbloqueo de la sesión predeterminada de eventos ampliados] (http://dba.stackexchange.com/questions/10644/deadlock-error-isnt-returning-the-deadlock-sql/10646#10646) De lo contrario, configurado para capturar esto la próxima vez. –

Respuesta

2

Parece que tienes estancamiento general de problema de bloqueo con mesa simultánea/clustindex analizar y actualizar/borrar

Mire a su consulta resultante y en su paln - si tiene tales un escaneo: intente evitarlo con una indexación adecuada o hackelo para usar la sugerencia (NOLOCK). Pero nolock pista no es bueno si necesita datos exactos y consistentes sin posibles filas fantasma

Y - en primer lugar vistazo a gráfico de interbloqueo!

Cuestiones relacionadas