SR0010: Vermeiden Sie die Verwendung einer veralteten Syntax, wenn Sie Tabellen oder Sichten verknüpfen

Regel-ID

SR0010

Kategorie

Microsoft.Design

Unterbrechende Änderung

Nicht unterbrechend

Ursache

Mindestens ein Join zwischen Tabellen und Ansichten verwendet anstelle von aktueller Syntax veraltete Syntax (z. B. =, * =, oder = * in einer WHERE-Klausel).

Regelbeschreibung

Joins, die die veraltete Syntax verwenden, lassen sich in zwei Kategorien unterteilen:

  • Innerer Join
    Für einen inneren Join werden die Werte in den Spalten, die verknüpft werden, mit einem Vergleichsoperator verglichen, z. B. =, <, > =, usw. Innere Joins geben nur Zeilen zurück, wenn mindestens eine Zeile aus jeder Tabelle die Joinbedingung erfüllt.

  • Äußerer Join
    Äußere Joins geben alle Zeilen von mindestens einer der Tabellen oder Ansichten zurück, die in der FROM-Klausel angegeben wurden, sofern diese Zeilen sämtlichen WHERE- oder HAVING-Suchbedingungen entsprechen. Wenn Sie mit * = oder = * einen äußeren Join angeben, verwenden Sie eine veraltete Syntax.

Behandeln von Verstößen

Um in einem inneren Join einen Verstoß zu korrigieren, verwenden Sie die INNER JOIN-Syntax (siehe Beispiel weiter unten in diesem Thema). Weitere Informationen dazu finden Sie auf dieser Seite der Microsoft-Website: Using Inner Joins.

Um in einem äußeren Join einen Verstoß zu korrigieren, verwenden Sie die entsprechende OUTER JOIN-Syntax (siehe Beispiele weiter unten in diesem Thema). Ihnen stehen die folgenden Optionen zur Verfügung:

  • LINKER ÄUSSERER JOIN oder LINKER JOIN

  • RECHTER ÄUSSERER JOIN ODER RECHTER JOIN

    Tipp

    Transact-SQL unterstützt FULL OUTER JOIN und FULL JOIN, aber dieser Typ des Joins hatte keine vorherige Syntax.

Weitere Informationen dazu finden Sie auf dieser Seite der Microsoft-Website: Using Outer Joins.

Wann sollten Warnungen unterdrückt werden?

Diese Warnung sollte nicht unterdrückt werden. Sie sollten alle Instanzen korrigieren, da die veraltete Syntax in zukünftigen Versionen von SQL Server unter Umständen nicht funktioniert.

Beispiel

In den sechs Beispielen werden die folgenden Optionen veranschaulicht:

  1. In Beispiel 1 wird die veraltete Syntax für einen inneren Join veranschaulicht.

  2. In Beispiel 2 wird veranschaulicht, wie Sie Beispiel 1 aktualisieren können, um aktuelle Syntax zu verwenden.

  3. In Beispiel 3 wird die veraltete Syntax für einen linken äußeren Join veranschaulicht.

  4. In Beispiel 4 wird veranschaulicht, wie Sie Beispiel 2 aktualisieren können, um aktuelle Syntax zu verwenden.

  5. In Beispiel 5 wird die veraltete Syntax für einen rechten äußeren Join veranschaulicht.

  6. In Beispiel 6 wird veranschaulicht, wie Sie Beispiel 5 aktualisieren können, um aktuelle Syntax zu verwenden.

-- 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]

Siehe auch

Konzepte

Analysieren von Datenbankcode zum Verbessern der Codequalität