Descripción del problema: La semana pasada, recibí el mensaje de error siguiente en  la aplicación BO.

El procesador de consultas se quedó sin recursos internos y no pudo producir un plan de consulta.


Causa: Este es un evento raro y sólo se espera para las consultas extremadamente complejas o consultas que hacen referencia a un gran número de tablas o particiones. En mi caso, mi cliente tenía el siguiente error al tratar de seleccionar los registros a través de una consulta con un gran número de entradas en la cláusula de "IN" (> 10.000).

 

Resolución: Nuestra recomendación es simplificar la consulta. Usted puede tratar de reducir el problema con una mesa de trabajo temporal, a continuación, agregar el resultado de una subconsulta.

Véanse también las observaciones de Bol (http://technet.microsoft.com/en-us/library/ms177682.aspx)
“Si se incluye un número sumamente grande de valores (muchos miles) en una cláusula IN, se pueden agotar los recursos y obtenerse los errores 8623 o 8632. Para evitar este problema, almacene los elementos de la lista IN en una tabla..

 

Otras soluciones: Usted puede intentar ejecutar la consulta que utiliza con option (force order), option (hash join), option (merge join), option (querytraceon 4102)  en una guía de plan. .

 

KB interesante:
- FIX: A non-yielding scheduler error or an error 8623 occurs when you run a query that contains a large IN clause in SQL Server 2005, SQL Server 2008, or SQL Server 2008 R2
- FIX: Error message when you run a complex query after you install Cumulative Update 3 or Cumulative Update 4 for SQL Server 2005 Service Pack 2: "The query processor ran out of internal resources and could not produce a query plan"

 

Michel Degremont | Premier Field Engineer - SQL Server Core Engineer |