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