sql >> Base de Datos >  >> RDS >> Sqlserver

Migración de SQL Server 2000 a 2008 - ORDEN POR Problema al usar DISTINCT

Podrías cambiar la semántica ligeramente haciendo esto:

SELECT ZipCode FROM 
(
  SELECT DISTINCT ZipCode = LEFT(tz.Zipcode, 5)
    FROM dbo.TerritoryZip
) AS x
ORDER BY ZipCode;

Realmente no resuelve el problema ya que la consulta es más detallada y aún no puede evitar tocarla. En mi opinión, la solución que ya sugirió es mejor porque es más explícita sobre lo que está sucediendo.

No quiero ser duro, pero si no cree que podrá "encontrar todas las instancias de este tipo de SQL", entonces, ¿cómo confía en sus pruebas?

Sugeriría que mantener el modo 2000 no es la respuesta óptima. La razón es que esto puede hacer que se rompa otra sintaxis (por ejemplo, la forma en que puede llamar a las funciones de administración dinámica; consulte this Publicación de blog de Paul Randal y mi comentario al respecto), también corre el riesgo de perpetuar el código que debería corregirse (por ejemplo, *= de estilo antiguo / =* combinaciones que son válidas en el modo de compatibilidad con 2000, pero no serán válidas cuando pase de 2008 R2 -> Denali, que no es compatible con 2000).

No hay una configuración de "rigurosidad", pero puede votar por SET STRICT_CHECKS ON de Erland Sommarskog; sugerencia .