次の方法で共有


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

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

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

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

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

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

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

  9. [ローカル] ウィンドウが開いていることを確認します。 開いていない場合は、 [デバッグ] メニューの [ウィンドウ] をポイントし、 [ローカル] をクリックします。

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

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

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

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

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