次の方法で共有


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

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

エディション

Visual Basic

C#

C++

Web Developer

Express

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

[標準]

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

Pro/Team

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

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

SQL CLR オブジェクトをデバッグしようとしたときに "ユーザーによってキャンセルされました" というメッセージが表示された場合は、Visual Studio を実行しているコンピューターと SQL Server を実行しているコンピューターの両方を手動で構成する必要があります。 詳細については、「方法: Transact-SQL デバッグと SQL CLR デバッグを実行するためのコンピューターを構成する」を参照してください。

注意

実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。 詳細については、「設定の操作」を参照してください。

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

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

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

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

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

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

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

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

      注意

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

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

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

      注意

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

    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

参照

処理手順

方法: 共通言語ランタイム統合機能を使用して SQL Server のトリガーを作成および実行する