次の方法で共有


T-SQL コードを分析して欠陥を見つける

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Microsoft Fabric SQL Database

データベース スキーマをデータベース プロジェクトにインポートし、一連のルールに対してコードを分析することで、データベース スキーマの Transact-SQL コードの品質を向上させることができます。 たとえば、開発していないスキーマで、その品質が検証されていないエラーを見つけることができます。 詳細については、「コード分析の概要」を参照してください。

この初期評価では、データベース コード内のすべての潜在的な問題を見つける必要があります。 警告とその警告の原因となったコードを確認します。 T-SQL コードを改善するには、警告を修正し、潜在的に警告を抑制し、データベース プロジェクトを反復的に分析します。

前提条件

データベース プロジェクト内のコードを分析する前に、SQL プロジェクトが既に必要です。 既存のデータベースを使用してプロジェクトを作成する方法の詳細については、「チュートリアル: 既存のデータベースから開始する」を参照してください。

プロジェクトのビルドで SQL コード分析を有効にする

Visual Studio で SQL コード分析を有効にするには、ソリューション エクスプローラーでプロジェクトを右クリックし、[プロパティ] を選択します。 プロパティ ウィンドウの [コード分析] タブで、[ビルド時にコード分析を有効にする] チェックボックスを選択します。

プロジェクトのプロパティ ウィンドウを保存し、ソリューション エクスプローラーに戻ります。

SQL プロジェクトで SQL コード分析を有効にするには、.sqlproj ファイルを直接編集します。 .sqlproj ファイルを開き、最初の <PropertyGroup> ブロックに要素<RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>を追加して、コード分析を有効にします。

SQL Database プロジェクト拡張機能で SQL コード分析を有効にするには、.sqlproj ファイルを直接編集します。 [エクスプローラー] ビューから .sqlproj ファイルを開くか、[データベース プロジェクト] ビューでプロジェクトを右クリックし、[.sqlproj ファイルを編集する] を選択します。

テキスト エディターから、最初の <PropertyGroup> ブロックに要素 <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis> を追加して、コード分析を有効にします。

SQL プロジェクトで SQL コード分析を有効にするには、.sqlproj ファイルを直接編集します。 .sqlproj ファイルを開き、最初の <PropertyGroup> ブロックに要素<RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>を追加して、コード分析を有効にします。

コードを分析する

ビルド時に Code Analysis が有効になっているデータベース プロジェクト内のコードを分析するには、ソリューション エクスプローラーでプロジェクトを右クリックし、[ビルド] を選択します。

[出力] ウィンドウに、ビルド プロセス全体の結果が表示されます。

データベース プロジェクトの T-SQL コードは、ビルド中に分析されます。 Code Analysis のエラーと警告は、エラー一覧に表示されます。 エラー一覧が表示されない場合は、[表示] メニューを開き、[エラー一覧] を選択します。 警告をダブルクリックして、警告の原因となったコード行に移動できます。

ビルド時に Code Analysis が有効になっているデータベース プロジェクト内のコードを分析するには、ソリューション エクスプローラーでプロジェクトを右クリックし、[ビルド] を選択します。

[出力] ウィンドウに、ビルド プロセス全体の結果が表示されます。

データベース プロジェクトの T-SQL コードは、ビルド中に分析されます。 Code Analysis のエラーと警告は、エラー一覧に表示されます。 エラー一覧が表示されない場合は、[表示] メニューを開き、[エラー一覧] を選択します。 警告をダブルクリックして、警告の原因となったコード行に移動できます。

ビルド時にコード分析が有効になっているデータベース プロジェクト内のコードを分析するには、[データベース プロジェクト] ビューでプロジェクトを右クリックし、[ビルド] を選択します。

出力 ウィンドウには、ビルド プロセス全体の結果と、コード分析からのエラーまたは警告が表示されます。 各警告またはエラーで指定されたファイルは、警告の原因となったコード行に移動する対話型リンクです。

ビルド時にコード分析が有効になっているデータベース プロジェクト内のコードを分析するには、プロジェクト ディレクトリのコマンド ラインから dotnet build コマンドを実行します。

dotnet build MyDatabaseProject.sqlproj

コマンドからの出力には、ビルド プロセス全体の結果と、コード分析からのエラーまたは警告が表示されます。

コード分析ルールの構成

Visual Studio で特定のルールを無効または有効にするには、ソリューション エクスプローラーでプロジェクトを右クリックし、[プロパティ] を選択します。 プロパティ ウィンドウの [コード分析] タブで、テーブルからルールを選択します。 ルールの重大度を変更するには、一覧からそのルールの [警告をエラーとして扱う] ボックスを選択します。

プロジェクトのプロパティ ウィンドウを保存し、ソリューション エクスプローラーに戻ります。

SQL プロジェクトで特定のルールを無効または有効にするには、.sqlproj ファイルを直接編集します。 .sqlproj ファイルを開き、最初の <PropertyGroup> ブロックで SqlCodeAnalysisRules の要素を追加または変更して、有効または無効にするルールを指定します。 次のサンプル構成では、2 つのルール (SR0007 と SR0006) を無効にし、SR0008 を切り替えると、ビルド エラーが発生します。 残りのルールは既定で有効になっています。

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build">
  <Sdk Name="Microsoft.Build.Sql" Version="0.2.0-preview" />
  <PropertyGroup>
    <Name>AdventureWorks</Name>
    <DSP>Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider</DSP>
    <ModelCollation>1033, CI</ModelCollation>
    <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
    <SqlCodeAnalysisRules>-Microsoft.Rules.Data.SR0006;-Microsoft.Rules.Data.SR0007;+!Microsoft.Rules.Data.SR0008</SqlCodeAnalysisRules>
  </PropertyGroup>
...

SQL Database プロジェクト拡張機能で特定のルールを無効または有効にするには、.sqlproj ファイルを直接編集します。 [エクスプローラー] ビューから .sqlproj ファイルを開くか、[データベース プロジェクト] ビューでプロジェクトを右クリックし、[.sqlproj ファイルを編集する] を選択します。

最初の<PropertyGroup> ブロックで SqlCodeAnalysisRules の要素を追加または変更して、有効または無効にするルールを指定します。 次のサンプル構成では、2 つのルール (SR0007 と SR0006) を無効にし、SR0008 を切り替えると、ビルド エラーが発生します。 残りのルールは既定で有効になっています。

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build">
  <Sdk Name="Microsoft.Build.Sql" Version="0.2.0-preview" />
  <PropertyGroup>
    <Name>AdventureWorks</Name>
    <DSP>Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider</DSP>
    <ModelCollation>1033, CI</ModelCollation>
    <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
    <SqlCodeAnalysisRules>-Microsoft.Rules.Data.SR0006;-Microsoft.Rules.Data.SR0007;+!Microsoft.Rules.Data.SR0008</SqlCodeAnalysisRules>
  </PropertyGroup>
...

SQL プロジェクトで特定のルールを無効または有効にするには、.sqlproj ファイルを直接編集します。 .sqlproj ファイルを開き、最初の <PropertyGroup> ブロックで SqlCodeAnalysisRules の要素を追加または変更して、有効または無効にするルールを指定します。 次のサンプル構成では、2 つのルール (SR0007 と SR0006) を無効にし、SR0008 を切り替えると、ビルド エラーが発生します。 残りのルールは既定で有効になっています。

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build">
  <Sdk Name="Microsoft.Build.Sql" Version="0.2.0-preview" />
  <PropertyGroup>
    <Name>AdventureWorks</Name>
    <DSP>Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider</DSP>
    <ModelCollation>1033, CI</ModelCollation>
    <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
    <SqlCodeAnalysisRules>-Microsoft.Rules.Data.SR0006;-Microsoft.Rules.Data.SR0007;+!Microsoft.Rules.Data.SR0008</SqlCodeAnalysisRules>
  </PropertyGroup>
...

コード分析の警告を抑制する

Visual Studio で特定の .sql ファイルに対するコード分析エラーまたは警告を抑制するには、エラー一覧で警告を右クリックし [静的コード分析メッセージを抑制する] を選択します。 そのルールと .sql ファイルのコード分析結果は抑制され、エラー一覧またはビルド出力には表示されなくなります。

Note

警告を抑制しても、基になる問題は解決されません。 警告を抑制するのは、有効な理由がある場合のみです。

SQL プロジェクト内の特定の .sql ファイルに対するコード分析エラーまたは警告を抑制するには、 StaticCodeAnalysis.SuppressMessages.xml ファイルをプロジェクトに追加します。 ファイルで、ルール ID と警告を抑制するファイルを指定します。

<?xml version="1.0" encoding="utf-8" ?>
<StaticCodeAnalysis version="2" xmlns="urn:Microsoft.Data.Tools.Schema.StaticCodeAnalysis">
  <SuppressedFile FilePath="Views/SelectStarView.sql">
    <SuppressedRule Category="Microsoft.Rules.Data" RuleId="SR0001" />
  </SuppressedFile>
</StaticCodeAnalysis>

ファイルが存在しない場合は、プロジェクトのルートに作成します。 ファイルが既に存在する場合は、新しい <SuppressedFile><SuppressedRule /></SuppressedFile> 要素を作成して、既存の StaticCodeAnalysis.SuppressMessages.xml ファイルに対する追加の警告を抑制します。

そのルールと .sql ファイルのコード分析結果は抑制され、ビルド出力には表示されなくなります。

SQL Database プロジェクト拡張機能の特定の .sql ファイルに対するコード分析エラーまたは警告を抑制するには、StaticCodeAnalysis.SuppressMessages.xml ファイルをプロジェクトに追加します。 ファイルで、ルール ID と警告を抑制するファイルを指定します。

<?xml version="1.0" encoding="utf-8" ?>
<StaticCodeAnalysis version="2" xmlns="urn:Microsoft.Data.Tools.Schema.StaticCodeAnalysis">
  <SuppressedFile FilePath="Views/SelectStarView.sql">
    <SuppressedRule Category="Microsoft.Rules.Data" RuleId="SR0001" />
  </SuppressedFile>
</StaticCodeAnalysis>

ファイルが存在しない場合は、プロジェクトのルートに作成します。 ファイルが既に存在する場合は、新しい <SuppressedFile><SuppressedRule /></SuppressedFile> 要素を作成して、既存の StaticCodeAnalysis.SuppressMessages.xml ファイルに対する追加の警告を抑制します。

そのルールと .sql ファイルのコード分析結果は抑制され、ビルド出力には表示されなくなります。

SQL プロジェクト内の特定の .sql ファイルに対するコード分析エラーまたは警告を抑制するには、 StaticCodeAnalysis.SuppressMessages.xml ファイルをプロジェクトに追加します。 ファイルで、ルール ID と警告を抑制するファイルを指定します。

<?xml version="1.0" encoding="utf-8" ?>
<StaticCodeAnalysis version="2" xmlns="urn:Microsoft.Data.Tools.Schema.StaticCodeAnalysis">
  <SuppressedFile FilePath="Views/SelectStarView.sql">
    <SuppressedRule Category="Microsoft.Rules.Data" RuleId="SR0001" />
  </SuppressedFile>
</StaticCodeAnalysis>

ファイルが存在しない場合は、プロジェクトのルートに作成します。 ファイルが既に存在する場合は、新しい <SuppressedFile><SuppressedRule /></SuppressedFile> 要素を作成して、既存の StaticCodeAnalysis.SuppressMessages.xml ファイルに対する追加の警告を抑制します。

そのルールと .sql ファイルのコード分析結果は抑制され、ビルド出力には表示されなくなります。