チュートリアル : 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 トリガを新しく作成し、ステップ インします。
メモ : |
---|
使用している設定またはエディションによっては、表示されるダイアログ ボックスやメニュー コマンドがヘルプに記載されている内容と異なる場合があります。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。 |
SQL CLR トリガをデバッグするには
新しい SQL Server プロジェクトで、AdventureWorks データベースへの接続を確立します。詳細については、「方法 : データベースに接続する」を参照してください。
後述する最初のサンプルにあるコードを使用して、新しいトリガを作成し、iContact.cs と名前を付けます。詳細については、「方法 : SQL Server のプロジェクトの種類を使用して開発する」を参照してください。
トリガを発生させてテストするスクリプトを追加します。ソリューション エクスプローラの TestScripts ディレクトリを右クリックし、[テスト スクリプトの追加] をクリックして、後述する 2 つ目のサンプルにあるコードを挿入します。ファイルに truContact.sql と名前を付けて保存します。ファイル名を右クリックし、[既定のデバッグ スクリプトの設定] をクリックします。
iContact.cs にブレークポイントを設定し、[デバッグ] メニューの [開始] をクリックして、プロジェクトのコンパイル、配置、単体テストを実行します。黄色の矢印で表される命令ポインタがブレークポイントに表示されて、トリガのデバッグが行われます。
いろいろなデバッグ機能を試してください。
SqlTriggerContext をインスタンス化するステートメントの次まで、ステップ実行します。
[ローカル] ウィンドウを開きます。変数 triggContext (SqlTriggerContext) を開いて、メンバを確認することもできます。詳細については、「方法 : デバッガ変数ウィンドウを使用する」を参照してください。
メモ : サーバーは、デバッガ ウィンドウの変数値に対する変更を反映しない場合があります。詳細については、「SQL デバッグの制約」を参照してください。
[デバッグ] メニューの [ステップ イン] をクリックして、ストアド プロシージャの 1 行をステップ実行します。このステップ実行により、SqlPipe 型の sqlP 変数の値がインスタンス化されます。
[ウォッチ] ウィンドウを開きます。[ウォッチ] ウィンドウの任意の場所に sqlP 変数をドラッグします。ウォッチする変数のリストに追加されます。詳細については、「方法 : デバッガ変数ウィンドウを使用する」を参照してください。
メモ : [ウォッチ] ウィンドウでも変数の値を編集できます。
テキスト エディタで、最後の行を右クリックし、[ブレークポイントの挿入] をクリックします。
[デバッグ] メニューの [続行] をクリックすると、デバッガで新しいブレークポイントまでのコードが実行されます。
トリガのデバッグを終了するには、もう一度 [続行] をクリックします。[出力] ウィンドウに、トリガが正常に配置されたことを示すメッセージと、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 トリガを作成および実行する