チュートリアル: Transact-SQL ストアド プロシージャのデバッグ
このトピックの内容は、次の製品に該当します。
Visual Studio Ultimate |
Visual Studio Premium |
Visual Studio Professional |
Visual Studio Express |
---|---|---|---|
この例では、ダイレクト データベース デバッグによって (サーバー エクスプローラーを使用してストアド プロシージャにステップ インすることによって) Transact-SQL ストアド プロシージャを作成する方法とデバッグする方法について説明します。また、ブレークポイントの設定、データ項目の表示など、さまざまなデバッグ技術についても説明します。
注 |
---|
使用している設定またはエディションによっては、表示されるダイアログ ボックスやメニュー コマンドがヘルプに記載されている内容と異なる場合があります。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio Settings」を参照してください。 |
Transact-SQL ストアド プロシージャをデバッグするには
新しい SQL Server プロジェクトで、AdventureWorks2008 サンプル データベースへの接続を確立します。詳細については、「方法: サーバー エクスプローラーを使用してデータベースに接続する」を参照してください。
後述する最初のサンプルにあるコードを使用して、新しいストアド プロシージャを作成し、HelloWorld と名前を付けます。詳細については、「方法: SQL Server のデータベース プロジェクトまたはサーバー プロジェクトでデバッグする」を参照してください。
HelloWorld にブレークポイントを設定し、ストアド プロシージャにステップ インします。詳細については、「方法: サーバー エクスプローラーを使用してオブジェクトにステップ インする」を参照してください。SET @mynvarchar = @@VERSION 行に、黄色の矢印で指定された命令ポインターが表示されます。これは、ストアド プロシージャにおける最初の実行可能なコード行です。
いろいろなデバッグ機能を試してください。
[ローカル] ウィンドウを表示します。これを行うには、[デバッグ] メニューの [ウィンドウ] をポイントし、[ローカル] をクリックします。パラメーターとローカル変数およびそれらの値が、[ローカル] ウィンドウに表示されます。ストアド プロシージャの実行時に、変数の値を [ローカル]ウィンドウで編集できます。詳細については、「How to: Use Debugger Variable Windows」を参照してください。
メモ サーバーは、デバッガー ウィンドウの変数値に対する変更を反映しない場合があります。詳細については、「SQL デバッグの制約」を参照してください。
F10 キーを押して、ストアド プロシージャの 1 行をステップ実行します。[ローカル] ウィンドウでは、変数 @mynvarchar の値が変化しています。値は赤色で表示され、変更されたことを示します。
[ウォッチ] ウィンドウを表示します。これを行うには、[デバッグ] メニューの [ウィンドウ] をポイントし、[ウォッチ] をクリックします。詳細については、「How to: Use Debugger Variable Windows」を参照してください。
テキスト エディターで、@mynvarchar 変数をダブルクリックして選択します。[ウォッチ] ウィンドウの任意の場所に @mynvarchar をドラッグします。ウォッチする変数のリストに追加されます。
メモ [ウォッチ] ウィンドウでも変数の値を編集できます。
テキスト エディターで、 Return (0) の行を右クリックし、ショートカット メニューの [ブレークポイントの挿入] をクリックします。
[デバッグ] メニューの [続行] をクリックします。
もう一度 [続行] をクリックして、ストアド プロシージャのデバッグを終了します。
メモ AdventureWorks2008 データベースに関連付けられている [ストアド プロシージャ] ノードの下に表示されている AdventureWorks2008 データベースのストアド プロシージャであれば、任意のプロシージャにステップ インできます。
使用例
これは、ストアド プロシージャのコードです。
CREATE PROCEDURE HelloWorld
AS
DECLARE @mynvarchar NVARCHAR(50),
@myfloat FLOAT
SET @mynvarchar = @@VERSION
SET @mynvarchar = 'Hello, world!'
SET @myfloat = 1.6180
PRINT @mynvarchar
RETURN (0)