次の方法で共有


チュートリアル: Transact-SQL トリガーのデバッグ

このトピックの内容は、次の製品に該当します。

Visual Studio Ultimate

Visual Studio Premium

Visual Studio Professional

Visual Studio Express

ms165046.DoesApplybmp(ja-jp,VS.100).gif ms165046.DoesApplybmp(ja-jp,VS.100).gif ms165046.DoesApplybmp(ja-jp,VS.100).gif ms165046.DoesNotApplybmp(ja-jp,VS.100).gif

トリガーをデバッグするには、トリガーを起動するストアド プロシージャにブレークポイントを設定してから、トリガーにブレークポイントを設定します。そのうえで、「チュートリアル: Transact-SQL ストアド プロシージャのデバッグ」で説明されている手順を実行します。

この例では、AdventureWorks2008 データベースを使用します。このデータベースには、DELETE トリガーを備えた Purschasing.Vendor テーブルがあります。この例には、テーブルの行を削除してトリガーを起動するストアド プロシージャが含まれています。トリガーにブレークポイントを設定し、さまざまなパラメーターを指定してストアド プロシージャを実行すると、トリガーの異なる実行パスをたどることができます。

注意

使用している設定またはエディションによっては、表示されるダイアログ ボックスやメニュー コマンドがヘルプに記載されている内容と異なる場合があります。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio Settings」を参照してください。

SQL トリガーをデバッグするには

  1. 新しい SQL Server プロジェクトで、AdventureWorks2008 サンプル データベースとの接続を確立します。詳細については、「方法: サーバー エクスプローラーを使用してデータベースに接続する」を参照してください。

  2. 後に示す最初の例にあるコードを使用して、新しいストアド プロシージャを作成し、UpdateCurrency_T_SQL と名付けます。詳細については、「方法: SQL Server のデータベース プロジェクトまたはサーバー プロジェクトでデバッグする」を参照してください。

  3. DeleteVendor にブレークポイントを設定します。これは必須ではありません。ダイレクト データベース デバッグにより、プロシージャの先頭行がブレークポイントとして機能するからです。

  4. トリガー用のブレークポイントを設定します。

    1. トリガーのソース コードを開きます。そのためには、[テーブル] ノードを右クリックして、[Purchasing.Vendor] テーブルのノードを右クリックします。次に、dVendor という名前のトリガーのアイコンをダブルクリックします。

    2. SET NOCOUNT ON ステートメントの横にある灰色の余白をクリックして、トリガーにブレークポイントを設定します。この手順は必須です。トリガーにブレークポイントを設定しないと、ステップ インしようとしてもトリガーのコードがスキップされてしまいます。

  5. ストアド プロシージャにステップ インします。詳細については、「方法: サーバー エクスプローラーを使用してオブジェクトにステップ インする」を参照してください。

    [ストアド プロシージャの実行] ダイアログ ボックスが表示され、パラメーター値を要求されます。

  6. 次のパラメーター値を設定します。

    @entityID = 1492

    SET NOCOUNT ON 行に、命令ポインターの黄色い矢印が表示されます。これは、ストアド プロシージャにおける最初の実行可能なコード行です。

  7. いろいろなデバッグ機能を試してください。

    1. F11 キーまたは [ステップ イン] ボタンを使用して、コードをステップ実行します。

      DELETE ステートメントで F11 キーを再度押すと、トリガーにステップ インします。

    2. 終了してストアド プロシージャに戻るまでトリガーをステップ実行して、最後まで続行します。

使用例

これは、トリガーを起動するストアド プロシージャのコードです。

ALTER PROCEDURE dbo.DeleteVendor
    (
        @entityID       int
    )
AS
    SET NOCOUNT ON
    DELETE Purchasing.Vendor
    WHERE BusinessEntityID = @entityID 
    RETURN

関連項目

概念

Transact-SQL のデバッグ

その他の技術情報

Server Explorer/Database Explorer