方法 : SQL CLR のストアド プロシージャをデバッグする

更新 : 2007 年 11 月

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

Edition

Visual Basic

C#

C++

Web Developer

Express

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

Standard

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

Pro/Team

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

表の凡例 :

トピック該当

対象

トピック該当なし

該当なし

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

既定で非表示のコマンド

T-SQL プロシージャの場合と同様に、ダイレクト データベース デバッグを使用して、既存の SQL CLR ストアド プロシージャをデバッグできます。ただし、SQL CLR プロシージャを作成したり修正したりする場合は、コンパイルと展開が必要なため、この方法は使用できません。これらの手順は、T-SQL プロシージャにはありません。この場合、Visual Studio で SQL Server プロジェクトを作成する必要があります。

次のタスクで、新しい SQL CLR ストアド プロシージャを Adventureworks データベース (SQL Server 2005 でインストールされるデータベースの 1 つ) に作成し、それをデバッグする方法について説明します。Sales.Currency テーブルに、新しい通貨を追加するストアド プロシージャを作成します。

この例では、SQL Server プロジェクト内のデバッグに焦点を合わせています。ストアド プロシージャを作成すると、ダイレクト データベース デバッグを使用してデバッグできます。詳細については、「方法 : サーバー エクスプローラを使用してオブジェクトにステップ インする」を参照してください。

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

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

SQL CLR ストアド プロシージャをデバッグするには

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

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

  3. ストアド プロシージャをテストするときに呼び出すスクリプトを追加します。ソリューション エクスプローラの [TestScripts] ディレクトリを右クリックし、[テスト スクリプトの追加] をクリックして、後述する 2 つ目のサンプルにあるコードを挿入します。このファイルに InsertCurrency.sql という名前を付けて、保存します。ファイル名を右クリックし、[既定のデバッグ スクリプトの設定] をクリックします。

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

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

    1. [ローカル] ウィンドウを開いて、[デバッグ] メニューの [ステップ イン] をクリックし、ストアド プロシージャの 1 行をステップ実行します。[ローカル] ウィンドウでは、変数 @mynvarchar の値が変化しています。値は赤色で表示され、変更されたことを示します。詳細については、「[ローカル] ウィンドウ」を参照してください。

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

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

    2. [ウォッチ] ウィンドウを開きます。[テキスト エディタ] で、InsertCurrencyCommand 変数を [ウォッチ] ウィンドウの任意の場所にドラッグします。

      ウォッチする変数のリストに追加されます。詳細については、「方法 : デバッガ変数ウィンドウを使用する」を参照してください。

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

    3. テキスト エディタで、InsertCurrencyCommand.ExecuteNonQuery の行を右クリックし、ショートカット メニューの [ブレークポイントの挿入] をクリックします。

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

  6. もう一度 [続行] をクリックして、ストアド プロシージャのデバッグを終了します。

    [出力] ウィンドウに、ストアド プロシージャが正常に配置されたことを示すメッセージと、InsertCurrency.sql ファイルのコマンドを実行した結果が表示されます。

使用例

ストアド プロシージャのテンプレートを、このコードで置き換えます。

using System;
using System.Data;
using System.Data.Sql;
using System.Data.SqlServer;
using System.Data.SqlTypes;

public partial class StoredProcedures
{
    [SqlProcedure]
    public static void InsertCurrency(SqlString currencyCode, 
                                               SqlString name)
    {
        using(SqlConnection conn = new SqlConnection("context connection=true")) {
        SqlCommand cmd = new SqlCommand([your SQL statement], conn);
        }
        InsertCurrencyCommand.CommandText = "insert Sales.Currency"
                     + " (CurrencyCode, Name, ModifiedDate) values('" 
                     + currencyCode.ToString() + "', '" 
                     + name.ToString() + "', '" 
                     + DateTime.Now.ToString() + "')";
        InsertCurrencyCommand.ExecuteNonQuery();
    }
}

これは、ストアド プロシージャを実行するときに使用するテスト スクリプトです。

- Delete any row that might exist with a key value
- that matches the one we are going to insert
DELETE Sales.Currency
WHERE CurrencyCode = 'eee'
EXEC InsertCurrency 'eee', 'MyCurr4'
SELECT * FROM Sales.Currency WHERE CurrencyCode = 'eee'

参照

処理手順

方法 : CLR の SQL Server ストアド プロシージャを作成および実行する

その他の技術情報

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