Se produce un desbordamiento de pila cuando ejecuta una consulta que contenga un gran número de argumentos dentro de un IN o una cláusula NOT IN en SQL Server

Seleccione idioma Seleccione idioma
Id. de artículo: 288095 - Ver los productos a los que se aplica este artículo
Error nº: 235727 (shiloh_bugs)
Error nº: 58274 (sqlbug_70)
Expandir todo | Contraer todo

Síntomas

Consultas que contienen un gran número de argumentos (miles) dentro de un IN o una cláusula NOT IN pueden generar un desbordamiento de pila. Por ejemplo, la siguiente consulta da como resultado un desbordamiento de pila:
SELECT max(au_id) FROM authors WHERE au_id IN(1,2,5,......,11571)  
-- Query contains over 11570 arguments.
				
registro de errores de SQL Server contiene información similar al siguiente cuando se produce el desbordamiento de pila:
2000-08-10 12:02:37.87 spid51    08/10/00 12:02:37 Stack Overflow Dump not possible - Exception c00000fd E at 0x00587286
2000-08-10 12:02:37.87 spid51    Address=587286 Exception Code = c00000fd
2000-08-10 12:02:37.87 spid51    eax=195922d0 ebx=19592338 ecx=2ad0e938 edx=00000007
2000-08-10 12:02:37.87 spid51    esi=196ce2c8 edi=19592180 eip=00587286 esp=2ac93000
2000-08-10 12:02:37.87 spid51    ebp=2ac93028 efl=00010202
2000-08-10 12:02:37.87 spid51    cs=1b ss=23 ds=23 es=23 fs=38 gs=0
2000-08-10 12:02:37.87 spid51    1: Return Address 00587286
2000-08-10 12:02:37.87 spid51    2: Return Address 0058728B.................
				
En algunos casos, SQL Server puede realmente apagado como consecuencia de desbordamiento de pila.

Solución

Vuelva a escribir la consulta y utilizar una tabla #temp para que contenga los valores de la lista IN en lugar de utilizar una cláusula IN. Por ejemplo, la consulta anterior puede ser re-written así:
CREATE TABLE #IN_values (au_id char(4))
INSERT INTO #IN_values select au_id FROM Table_with_values_123456789...

SELECT max(au_id)
FROM authors as A
JOIN #IN_values as I ON (A.au_id = I.au_id)
				

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:" de este artículo.

Más información

No se desconecta el cliente, pero puede producirse este mensaje de error:
Servidor: Mensaje 8621, nivel 17, estado 1, línea 2 Error interno del procesador de consultas: el procesador de consultas se quedó sin espacio de pila durante la optimización de consultas.

Propiedades

Id. de artículo: 288095 - Última revisión: viernes, 02 de noviembre de 2007 - Versión: 4.4
La información de este artículo se refiere a:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Standard Edition
Palabras clave: 
kbmt kbprb kbpending KB288095 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 288095

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com