チュートリアル : SQL CLR のユーザー定義スカラ関数のデバッグ
更新 : 2007 年 11 月
このトピックの内容は、次の製品に該当します。
Edition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
||||
Standard |
||||
Pro/Team |
表の凡例 :
対象 |
|
該当なし |
|
既定で非表示のコマンド |
この例では、SQL CLR のユーザー定義関数 (UDF: User Defined Function) をデバッグする方法について説明します。ここでは、Adventureworks サンプル データベースに新しい SQL CLR ユーザー定義関数を作成します。
メモ : |
---|
使用している設定またはエディションによっては、表示されるダイアログ ボックスやメニュー コマンドがヘルプに記載されている内容と異なる場合があります。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。 |
SQL CLR ユーザー定義スカラ関数をデバッグするには
新しい SQL Server プロジェクトで、AdventureWorks サンプル データベースとの接続を確立します。詳細については、「方法 : データベースに接続する」を参照してください。
後述の最初のサンプルにあるコードを使用して、新しい関数を作成し、OrderCount.cs と名前を付けます。詳細については、「方法 : SQL Server のプロジェクトの種類を使用して開発する」を参照してください。
SELECT ステートメントに含めて、関数をテストするスクリプトを追加します。ソリューション エクスプローラの TestScripts ディレクトリを右クリックし、[テスト スクリプトの追加] をクリックして、後述する 2 つ目のサンプルにあるコードを挿入します。ファイルに CallOrderCount.sql と名前を付けて保存します。ファイル名を右クリックし、[既定のデバッグ スクリプトの設定] をクリックします。
OrderCount.csで、SqlCommand をインスタンス化する行にブレークポイントを設定し、[デバッグ] メニューの [開始] をクリックして、プロジェクトのコンパイル、配置、およびユニットのテストを実行します。黄色の矢印で表される命令ポインタがブレークポイントに表示されて、関数のデバッグが行われます。
いろいろなデバッグ機能を試してください。
[デバッグ] メニューの [ステップ イン] を使用して、SqlCommand をインスタンス化するステートメントの次まで、ステップ実行します。
[ローカル] ウィンドウで、変数 sqlComm を開きます。これは SqlCommand であるため、メンバを確認します。
[デバッグ] メニューの [ステップ イン] をクリックして、関数の 1 行をステップ実行します。メンバ sqlComm.CommandText がインスタンス化されていることに注意してください。
テキスト エディタで、sqlComm を [ウォッチ] ウィンドウの任意の場所にドラッグします。ウォッチする変数のリストに追加されます。
[ステップ イン] をもう一度クリックします。[ダイナミック T-SQL] という新しいウィンドウが開き、実行される SQL ステートメントが表示されます。
[ステップ イン] をクリックすると、ステートメントが実行され、関数に戻ります。
[続行] をもう一度クリックすると、2 つ目の [ダイナミック T-SQL] ウィンドウが開き、関数値を戻すコードが表示されます。
関数のデバッグを終了するには、もう一度 [続行] をクリックします。
使用例
これは、関数の作成に必要なコードです。
using System;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
public partial class UserDefinedFunctions
{
[Microsoft.SqlServer.Server.SqlFunction(DataAccess = DataAccessKind.Read)]
public static int OrderCount()
{
using (SqlConnection conn = new SqlConnection("context connection=true"))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT 42";
//cmd = new SqlCommand("SELECT 42",conn);
int result = (int)cmd.ExecuteScalar();
return result;
}
}
};
これは、関数を呼び出すテスト スクリプトです。
SELECT dbo.OrderCount()
参照
処理手順
方法 : CLR の SQL Server ユーザー定義関数を作成および実行する