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

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
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Error nº: 235727 (shiloh_bugs)
Error nº: 58274 (sqlbug_70)
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 0x005872862000-08-10 12:02:37.87 spid51    Address=587286 Exception Code = c00000fd2000-08-10 12:02:37.87 spid51    eax=195922d0 ebx=19592338 ecx=2ad0e938 edx=000000072000-08-10 12:02:37.87 spid51    esi=196ce2c8 edi=19592180 eip=00587286 esp=2ac930002000-08-10 12:02:37.87 spid51    ebp=2ac93028 efl=000102022000-08-10 12:02:37.87 spid51    cs=1b ss=23 ds=23 es=23 fs=38 gs=02000-08-10 12:02:37.87 spid51    1: Return Address 005872862000-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 AJOIN #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: 12/06/2015 00:23:44 - Revisión: 4.4

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

  • kbnosurvey kbarchive kbmt kbprb kbpending KB288095 KbMtes
Comentarios