REVISIÓN: Una consulta SELECT inesperadamente devuelve un número incorrecto de filas en SQL Server 2005 Mobile Edition y en SQL Server 2005 Compact Edition

Seleccione idioma Seleccione idioma
Id. de artículo: 933697 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Síntomas

Cuando se ejecuta una consulta SELECT en Microsoft SQL Server 2005 Mobile Edition y en Microsoft SQL Server 2005 Compact Edition, la consulta devuelve inesperadamente un número incorrecto de filas. El problema se produce cuando se cumplen las condiciones siguientes:
  • La consulta SELECT contiene una combinación interna.
  • Una de las dos tablas que formen parte de tiene un índice en la columna combinada. La otra tabla no tiene ningún índice en cualquiera de sus columnas.
Por ejemplo, ejecutar la consulta siguiente en SQL Server 2005 Mobile Edition:
select * from T1, T2 where T1.Col = T2.Col1 order by T1.Col
Nota en este ejemplo, la tabla T1 tiene un índice en la columna columnas... tabla T2 no tiene un índice de columna Col1.

Causa

Este problema se produce porque el optimizador de consultas no descarta el plan anterior completamente. El optimizador de consultas considera varios planes de consulta antes de que el optimizador de consultas decide en el mejor plan para ejecutar una consulta. En algunos casos, el optimizador de consultas puede encontrar un plan que utiliza un índice para evaluar la condición. Sin embargo, el optimizador de consultas más adelante puede encontrar un plan mejor. En este caso, el optimizador de consultas descarta el plan anterior para utilizar el mejor plan.

Solución

Para resolver este problema, utilice uno de los métodos siguientes:
  • Crear un índice en la columna combinada en la segunda tabla.
  • Eliminar el índice de la columna combinada en la primera tabla.
Nota En el ejemplo de la sección "Síntomas", la columna combinada en la segunda tabla es T2.Col1. La columna combinada en la primera tabla es T1.Col.

Estado

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

Más información

Pasos para reproducir el problema

  1. Ejecute las instrucciones siguientes en una base de datos en SQL Server 2005 Mobile Edition:
    CREATE TABLE T1 (COL INT);
    GO;
    CREATE INDEX T1_IDX ON T1 (COL);
    GO;
    INSERT INTO T1 VALUES (1);
    INSERT INTO T1 VALUES (2);
    INSERT INTO T1 VALUES (3);
    GO;
    CREATE TABLE T2 (COL1 INT, COL2 INT);
    GO;
    INSERT INTO T2 VALUES (1,1);
    INSERT INTO T2 VALUES (2,2);
    INSERT INTO T2 VALUES (3,3);
    GO;
  2. Ejecute la siguiente instrucción:
    select * from T1, T2 where T1.Col = T2.Col1 order by T1.Col
    puede experimenta el problema que se describe en la sección "Síntomas".

Propiedades

Id. de artículo: 933697 - Última revisión: martes, 13 de marzo de 2007 - Versión: 1.2
La información de este artículo se refiere a:
  • Microsoft SQL Server 2005 Mobile Edition
  • Microsoft SQL Server 2005 Compact Edition
Palabras clave: 
kbmt kbtshoot kbexpertiseadvanced kbbug KB933697 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): 933697

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