Share via


方法 : Transact-SQL コードを分析して障害を見つける

ユーザー インターフェイスを使用してプロジェクトを構築するか、MSBuild を使用してプロジェクトを構築した場合は、必要に応じて Transact-SQL (T-SQL) コードを分析できます。 コードに、設計、名前付け、またはパフォーマンスに関する障害が含まれていると、そのコードを分析した後に 1 つ以上のエラーまたは警告が表示されます。 これらのエラーまたは警告をクリックすると、それらに関連するコードが表示されます。 詳細情報を表示して、その原因やそれらを抑制する必要があるかどうかについて、正しく理解することができます。 Visual Studio Team System Database Edition でのコード分析の詳細については、「スタティック分析によるデータベース コードの改善」を参照してください。

コードを分析する前に、分析の一部として実行する規則を構成できます。 詳細については、「方法 : データベース コードのスタティック分析の特定の規則を有効または無効にする」を参照してください。 さまざまなビルド構成に対して、個別の規則のセットを構成できます。 各開発者がコードをチェックインする前に規則の小規模なセットを実行して一般的な問題をチェックしておけば、総合的な分析は夜間に実行することができます。

Database Edition でのコードの分析

データベース プロジェクトの T-SQL コードを分析するには

  1. データベース プロジェクトが含まれているソリューションを開きます。

  2. [データ] メニューの [スタティック コード分析] をポイントし、[実行] をクリックします。

    データベース プロジェクトのコードが分析され、警告またはエラーがあると [エラー一覧] に表示されます。

エラーまたは警告の原因となったソース コードを表示するには

  1. [エラー一覧] で、エラーまたは警告をダブルクリックします。 エラーまたは警告を強調表示して、Enter キーを押すこともできます。

    T-SQL エディタが開き、エラーまたは警告に関連するコードが表示されます。 通常は、エラーまたは警告の原因となった句にカーソルが置かれます。

  2. 次のいずれかの操作を実行します。

エラーまたは警告に関する詳細情報を表示するには

  • [エラー一覧] で、次のいずれかの操作を実行します。

    • エラーまたは警告をクリックし、F1 キーを押します。

    • エラーまたは警告を右クリックし、[エラーのヘルプを表示] をクリックします。

      エラーまたは警告に関連付けられたヘルプ トピックが表示されます。 このトピックには、問題の原因、コードの修正方法、およびエラーまたは警告を抑制できるかどうかに関する情報が含まれています。

MSBuild を使用したコードの分析

毎日夜間に規則の総合的なセットを適用する場合は、MSBuild を使用してコードを分析できます。 各ビルド構成の規則を構成し、適用する規則が含まれた構成を指定できます。

応答ファイルを使用して、MSBuild にコマンド ライン引数を渡すことができます。 このファイルには、プロジェクト プロパティをオーバーライドするコマンド ライン スイッチなど、MSBuild に対して有効なコマンド ライン スイッチを含めることができます。 応答ファイルの詳細については、「MSBuild 応答ファイル」を参照してください。MSBuild のコマンド ライン オプションの詳細については、「MSBuild コマンド ライン リファレンス」を参照してください。

コマンド プロンプトからコードを分析すると、StaticCodeAnalysis.Results.xml という名前の XML ファイルに結果が書き込まれます。 このファイルは SQL サブフォルダのプロジェクト フォルダ内にあります。 ResultsFile プロジェクト プロパティの値をオーバーライドすることにより、異なるファイル名を指定できます。

コマンド プロンプトからデータベース プロジェクトの T-SQL コードを分析するには

  1. [コマンド プロンプト] ウィンドウを開きます。

    Dd172119.alert_caution(ja-jp,VS.90).gif重要 :

    MSBuild.exe を実行するには、Visual Studio コマンド プロンプトを使用するか、%VS80COMNTOOLS% 環境変数で指定されたフォルダにある vsvars32.bat バッチ ファイルを実行する必要があります。

  2. プロジェクト ディレクトリに移動します。

  3. コマンド プロンプトで、次の例のようなコマンド ラインを入力します。

    MSBuild /t:StaticCodeAnalysis /p:Configuration=Release DatabaseProject.dbproj

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

    MSBuild.exe は、PATH 環境変数で指定されるパスに存在している必要があります。

    次のような結果が表示されます。

Microsoft (R) Build Engine Version 3.5.30718.1
[Microsoft .NET Framework, Version 2.0.50727.3051]
Copyright (C) Microsoft Corporation 2007. All rights reserved.

Build started 9/11/2008 3:38:29 PM.
Project "C:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\DatabaseProject\DatabaseProject.dbproj" on node 0 (StaticCodeAnalysis target(s)).
  Creating a model to represent the project...
  Loading project files...
  Building the project model and resolving object interdependencies...
  Validating the project model...
C:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\DatabaseProject\SCHEMA OBJECTS\SCHEMAS\DBO\PROGRAMMABILITY\STORED PROCEDURES\sp_ProcedureName.proc.SQL(1,24): warning : SR0016 : Microsoft.Naming : Stored procedure(sp_ProcedureName) includes sp_ prefix in its name.
  One problem has been detected.
  The results are saved in StaticCodeAnalysis.Results.xml.
Done Building Project "C:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\DatabaseProject\DatabaseProject.dbproj" (StaticCodeAnalysis target(s)) -- FAILED.


Build FAILED.

"C:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\DatabaseProject\DatabaseProject.dbproj" (StaticCodeAnalysis target) (1) ->
(DspStaticCodeAnalysis target) ->
  C:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\DatabaseProject\SCHEMA OBJECTS\SCHEMAS\DBO\PROGRAMMABILITY\STORED PROCEDURES\sp_ProcedureName.PROC.SQL(1,24): warning : SR0016 : Microsoft.Naming : Stored procedure(sp_ProcedureName) includes sp_ prefix in its name.

    1 Warning(s)
    0 Error(s)

Time Elapsed 00:00:07.07

参照

処理手順

チュートリアル : 既存のデータベースに対する Transact-SQL コードの分析

概念

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

その他の技術情報

Transact-SQL の設計上の問題

Transact-SQL の名前付けの問題

Transact-SQL のパフォーマンスの問題

マネージ コード障害の検出と修正