Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Identificador de regla |
SR0010 |
Categoría |
Microsoft.Design |
Cambio problemático |
Poco problemático |
Causa
Una o varias combinaciones entre tablas y vistas usan una sintaxis desusada (como =, *= o =* en una cláusula WHERE) en lugar de una sintaxis actualizada.
Descripción de la regla
Las combinaciones que usan la sintaxis desusada se dividen en dos categorías:
Combinación interna
Para una combinación interna, los valores de las columnas que se combinan se comparan mediante un operador de comparación como =, <, > =, etc. Las combinaciones internas devuelven filas únicamente si al menos una fila de cada tabla cumple la condición de combinación.Combinación externa
Las combinaciones externas devuelven todas las filas de al menos una de las tablas o vistas especificadas en la cláusula FROM, siempre y cuando esas filas cumplan las condiciones de búsqueda WHERE o HAVING. Si utiliza *= o =* para especificar una combinación externa, utiliza una sintaxis desusada.
Cómo corregir infracciones
Para corregir una infracción en una combinación interna, utilice la sintaxis INNER JOIN, como se muestra en el ejemplo posterior de este tema. Para obtener más información, vea esta página en el sitio web de Microsoft: Usar combinaciones internas.
Para corregir una infracción en una combinación externa, utilice la sintaxis OUTER JOIN apropiada, como se muestra en los ejemplos posteriores de este tema. Tiene las opciones siguientes:
COMBINACIÓN EXTERNA IZQUIERDA o COMBINACIÓN IZQUIERDA
COMBINACIÓN EXTERNA DERECHA o COMBINACIÓN DERECHA
Nota
Transact-SQL admite combinación externa completa y combinación completa, pero ese tipo de unión no tenía sintaxis previa.
Para obtener más información, vea esta página en el sitio web de Microsoft: Usar combinaciones externas.
Cuándo suprimir advertencias
Esta advertencia no se debe suprimir. Debe corregir todas las instancias porque la sintaxis desusada quizás no funcione en versiones futuras de SQL Server.
Ejemplo
En los seis ejemplos se muestran las siguientes opciones:
El ejemplo 1 muestra la sintaxis desusada para una combinación interna.
El ejemplo 2 muestra cómo actualizar el ejemplo 1 para utilizar la sintaxis actual.
El ejemplo 3 muestra la sintaxis desusada para una combinación externa izquierda.
El ejemplo 4 muestra cómo actualizar el ejemplo 2 para utilizar la sintaxis actual.
El ejemplo 5 muestra la sintaxis desusada para una combinación externa derecha.
El ejemplo 6 muestra cómo actualizar el ejemplo 5 para utilizar la sintaxis actual.
-- Example 1: Deprecated syntax for an inner join
SELECT [T2].[c3], [T1].[c3]
FROM [dbo].[Table2] T2, [dbo].[Table1] T1
WHERE [T1].[ID] = [T2].[ID]
-- Example 2: Current syntax for an inner join
SELECT [T2].[c3], [T1].[c3]
FROM [dbo].[Table2] AS T2
INNER JOIN [dbo].[Table1] as T1
ON [T2].[ID] = [T2].[ID]
-- Example 3: Deprecated syntax for a left outer join
SELECT [T2].[c3], [T1].[c3]
FROM [dbo].[Table2] T2, [dbo].[Table1] T1
WHERE [T1].[ID] *= [T2].[ID]
-- Example 4: Fixed syntax for a left outer join
SELECT [T2].[c3], [T1].[c3]
FROM [dbo].[Table2] AS T2
LEFT OUTER JOIN [dbo].[Table1] as T1
ON [T2].[ID] = [T2].[ID]
-- Example 5: Deprecated syntax for a right outer join
SELECT [T2].[c3], [T1].[c3]
FROM [dbo].[Table2] T2, [dbo].[Table1] T1
WHERE [T1].[ID] =* [T2].[ID]
-- Example 6: Fixed syntax for a right outer join
SELECT [T2].[c3], [T1].[c3]
FROM [dbo].[Table2] AS T2
RIGHT OUTER JOIN [dbo].[Table1] as T1
ON [T2].[ID] = [T2].[ID]
Vea también
Conceptos
Analizar el código de base de datos para mejorar la calidad del código