次の方法で共有


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

更新 : 2007 年 11 月

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

Edition

Visual Basic

C#

C++

Web Developer

Express

トピック該当なし トピック該当なし トピック該当なし トピック該当なし

Standard

トピック該当なし トピック該当なし トピック該当なし トピック該当なし

Pro/Team

トピック該当 トピック該当 トピック該当 トピック該当

表の凡例 :

トピック該当

対象

トピック該当なし

該当なし

トピックは該当しますが、コマンドは既定では非表示です

既定で非表示のコマンド

この例では、SQL CLR トリガのデバッグ方法を示します。AdventureWorks サンプル データベース (SQL Server 2005 と共にインストールされるデータベースの 1 つ) の Contact テーブルを使用します。サンプルでは、Contact テーブル、Insert ステートメントを使用する CLR トリガを新しく作成し、ステップ インします。

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

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

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

  1. 新しい SQL Server プロジェクトで、AdventureWorks データベースへの接続を確立します。詳細については、「方法 : データベースに接続する」を参照してください。

  2. 後述する最初のサンプルにあるコードを使用して、新しいトリガを作成し、iContact.cs と名前を付けます。詳細については、「方法 : SQL Server のプロジェクトの種類を使用して開発する」を参照してください。

  3. トリガを発生させてテストするスクリプトを追加します。ソリューション エクスプローラの TestScripts ディレクトリを右クリックし、[テスト スクリプトの追加] をクリックして、後述する 2 つ目のサンプルにあるコードを挿入します。ファイルに truContact.sql と名前を付けて保存します。ファイル名を右クリックし、[既定のデバッグ スクリプトの設定] をクリックします。

  4. iContact.cs にブレークポイントを設定し、[デバッグ] メニューの [開始] をクリックして、プロジェクトのコンパイル、配置、単体テストを実行します。黄色の矢印で表される命令ポインタがブレークポイントに表示されて、トリガのデバッグが行われます。

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

    1. SqlTriggerContext をインスタンス化するステートメントの次まで、ステップ実行します。

    2. [ローカル] ウィンドウを開きます。変数 triggContext (SqlTriggerContext) を開いて、メンバを確認することもできます。詳細については、「方法 : デバッガ変数ウィンドウを使用する」を参照してください。

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

      サーバーは、デバッガ ウィンドウの変数値に対する変更を反映しない場合があります。詳細については、「SQL デバッグの制約」を参照してください。

    3. [デバッグ] メニューの [ステップ イン] をクリックして、ストアド プロシージャの 1 行をステップ実行します。このステップ実行により、SqlPipe 型の sqlP 変数の値がインスタンス化されます。

    4. [ウォッチ] ウィンドウを開きます。[ウォッチ] ウィンドウの任意の場所に sqlP 変数をドラッグします。ウォッチする変数のリストに追加されます。詳細については、「方法 : デバッガ変数ウィンドウを使用する」を参照してください。

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

      [ウォッチ] ウィンドウでも変数の値を編集できます。

    5. テキスト エディタで、最後の行を右クリックし、[ブレークポイントの挿入] をクリックします。

    6. [デバッグ] メニューの [続行] をクリックすると、デバッガで新しいブレークポイントまでのコードが実行されます。

  6. トリガのデバッグを終了するには、もう一度 [続行] をクリックします。[出力] ウィンドウに、トリガが正常に配置されたことを示すメッセージと、truContact.sql ファイルのコマンドを実行した結果が表示されます。

使用例

これは、この例で使用されるトリガを作成するために必要なコードです。

using System;
using System.Data;
using System.Data.Sql;
using Microsoft.SqlServer.Server;


public partial class Triggers
{
      // Enter existing table or view for the target and uncomment the attribute line.
      [Microsoft.SqlServer.Server.SqlTrigger (Name="Trigger1", Target="primes", Event="FOR UPDATE")]
      public static void Trigger1()
      {
            SqlTriggerContext triggContext = SqlContext.TriggerContext;
            SqlPipe sqlP = SqlContext.Pipe;
            sqlP.Send("primes inserted!");
      }
}

トリガを発生させるテスト スクリプトです。

UPDATE Person.Contact SET MiddleName = 'A' WHERE ContactID = 8

参照

処理手順

方法 : CLR の SQL Server トリガを作成および実行する

その他の技術情報

SQL CLR データベースのデバッグ