次の方法で共有


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

Transact-SQL デバッガーでは、SQL ストアド プロシージャの SQL 呼び出し履歴、ローカル変数、およびパラメーターが表示され、ストアド プロシージャをインタラクティブにデバッグできます。 Transact-SQL デバッガーでは、ローカル変数とパラメーターの表示と変更、グローバル変数の表示がサポートされています。 また、Transact-SQL スクリプトのデバッグ時にブレークポイントを制御および管理する機能も提供します。

この例では、Transact-SQL ストアド プロシージャを作成し、ステップ インでデバッグする方法を示します。

Note

Transact-SQL デバッグは、Azure SQL Database や Azure SQL Managed Instance では使用できません。

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

  1. データベース エンジン クエリ エディター ウィンドウで、SQL Server データベース エンジンのインスタンスに接続します。 ストアド プロシージャの例を作成できるデータベースを選択します。

  2. クエリ エディターで、次のコードを貼り付けます。

    CREATE TABLE [dbo].[Products] ([Id] INT, [Name] NVARCHAR(128))
    
    CREATE PROCEDURE [dbo].[AddProduct]
    @id INT,
    @name NVARCHAR(128)
    AS
    BEGIN
        INSERT INTO [dbo].[Products] ([Id], [Name]) VALUES (@id, @name)
        SELECT [Name] FROM [dbo].[Products] WHERE [Id] = @id
        DECLARE @nextid INT
        SET @nextid = @id + 1
        INSERT INTO [dbo].[Products] ([Id], [Name]) VALUES (@id, @name)
        SELECT [Name] FROM [dbo].[Products] WHERE [Id] = @nextid
    END
    
  3. F5 キーを押して、Transact-SQL コードを実行します。

  4. SQL Server オブジェクト エクスプローラーで、同じデータベース エンジンを右クリックし、[ 新しいクエリ...] を選択します。ストアド プロシージャを作成したのと同じデータベースに接続していることを確認します。

  5. 次のコードをクエリ ウィンドウに貼り付けます。

    EXECUTE [dbo].[AddProduct] 50, N'T-SQL Debugger Test';
    GO
    
  6. 左ウィンドウの余白を選択して、 EXEC ステートメントにブレークポイントを追加します。

  7. Transact-SQL エディターツール バーの緑色の矢印ボタンのドロップダウン リスト矢印を押し、[ デバッガーで実行 ] を選択して、デバッグを有効にしてクエリを実行します。

  8. または、 SQL メニューからデバッグを開始できます。 SQL>デバッガーで実行を選択します。

  9. [ローカル] ウィンドウが開いていることを確認します。 そうでない場合は、[ デバッグ ] メニューを選択し、[ Windows ] と [ ローカル] を選択します。

  10. F11 キーを押してクエリにステップ インします。 ストア プロシージャのパラメーターとそれぞれの値が [ ローカル ] ウィンドウに表示されます。 または、@name 句内の INSERT パラメーターの上にマウス ポインターを移動すると、T-SQL デバッガー テストという値が割り当てられていることがわかります。

  11. テキスト ボックスの [T-SQL デバッガー テスト] を選択します。 「Validate Change」と入力して Enter キーを押すことにより、デバッグ中の name 変数の値を変更します。 [ローカル] ウィンドウで値を変更することもできます。 パラメーターの値は赤で、変更を示します。

  12. F10 キーを押して、残りのコードをステップ オーバーします。

  13. デバッグが完了したら、 Product テーブルにクエリを実行して内容を表示します。

    SELECT *
    FROM [dbo].[Products];
    GO
    
  14. 結果ウィンドウで、テーブルに新しい行が存在することを確認します。