次の方法で共有


SR0010: テーブルやビューの結合に今後サポートされない構文を使用することは避けてください

RuleId

SR0010

カテゴリ

Microsoft.Design

互換性に影響する変更点

なし

原因

テーブルおよびビューの間の 1 つ以上の結合で、現在の構文の代わりに今後サポートされない構文 (WHERE 句の =、*=、=* など) が使用されています。

規則の説明

今後サポートされない構文を使用する結合は、次の 2 つのカテゴリに分類されます。

  • 内部結合
    内部結合の場合、結合する列内の値は =、<、>= などの比較演算子を使用して比較します。 内部結合では、各テーブルの少なくとも 1 つの行が結合条件を満たす場合にのみ行が返されます。

  • 外部結合
    外部結合では、すべての行が WHERE 検索条件または HAVING 検索条件を満たす場合にのみ、FROM 句に指定された少なくとも 1 つのテーブルまたはビューのすべての行が返されます。 *= または =* を使用して外部結合を指定すると、今後サポートされない構文を使用することになります。

違反の修正方法

内部結合の違反を修正するには、このトピックの後の例に示すように、INNER JOIN 構文を使用します。 詳細については、Microsoft Web サイトの「内部結合の使用」を参照してください。

外部結合の違反を修正するには、このトピックの後の例に示すように、適切な OUTER JOIN 構文を使用します。 次のようなオプションがあります。

  • LEFT OUTER JOIN または LEFT JOIN

  • RIGHT OUTER JOIN または RIGHT JOIN

    Dd172122.alert_note(ja-jp,VS.90).gifメモ :

    Transact-SQL (T-SQL) では FULL OUTER JOIN および FULL JOIN がサポートされますが、この種類の結合には前のような構文はありません。

詳細については、Microsoft Web サイトの「外部結合の使用」を参照してください。

警告を抑制する状況

この警告は抑制しないでください。 今後サポートされない構文は SQL Server の将来のリリースでは動作しない可能性があるので、すべてのインスタンスを修正することをお勧めします。

使用例

オプションの 6 つの例を次に示します。

  1. 例 1 は、内部結合の今後サポートされない構文を示します。

  2. 例 2 は、例 1 を更新して現在の構文を使用する方法を示します。

  3. 例 3 は、左外部結合の今後サポートされない構文を示します。

  4. 例 4 は、例 2 を更新して現在の構文を使用する方法を示します。

  5. 例 5 は、右外部結合の今後サポートされない構文を示します。

  6. 例 6 は、例 5 を更新して現在の構文を使用する方法を示します。

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

参照

概念

スタティック分析によるデータベース コードの改善