SQLShack

デバッグは、任意のソフトウェアプロセスの中で最も重要ではあるが痛みを伴う部分の一つです。 いくつかのエラーを見つけるには、コードのどのセクションがエラーの原因であるかを確認するために、コードを段階的に実行する必要があります。 これはランタイムデバッグと呼ばれます。

幸いなことに、SQL Server Management Studio(SSMS)には、開発者がスクリプトをデバッグするのに役立つ自動デバッグ機能が付属しています。 この記事では、非常に簡単な例を使用して、SSMSを使用してSQL Serverのストアドプロシージャをデバッグする方法を実際に説明します。

この例では、2つの数値をパラメーターとして受け取り、指定された2つの数値の間のすべての奇数を出力するストアドプロシージャ”spShowOddNumbers”を使用します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

プロシージャの作成spShowOddNumbers
@LowerRange INT,
@UpperRange INT
AS
BEGIN
WHILE(@LowerRange<@UpperRange)
BEGIN
IF(@LOWERRANGE%2!=0)
BEGIN
PRINT@LowerRange
END
SET@LowerRange=@LowerRange+1
END
PRINT”+RTRIM(@lowerRange)+’と’+RTRIM(@UpperRange)の間の奇数を印刷します
終了

SQL Serverでストアドプロシージャを呼び出すスクリプト:

1
2
3
4
5
6
7
8
9

DECLARE@lowerrange INT
SET@lowerrange=5
DECLARE@upperrange INT
SET@upperrange=20
EXEC spShowOddNumbers@lowerrange,@upperrange
DROP PROC spShowOddNumbers

デバッグオプション

SQL Server Management Studioには、さまざまなデバッグオプションがあります。

デバッグの開始

SQL ServerでSQL serverストアドプロシージャのデバッグを開始するには、ALT+F5キーを押すか、デバッグ->デバッグの開始に移動します。:

SQLでのストアドプロシージャのデバッグの開始

SQLでストアドプロシージャのデバッグを開始する

sql Serverでストアドプロシージャを呼び出しているウィンドウでデバッガを起動すると、次のように:

SQL-黄色のカーソル位置でストアドプロシージャのデバッグを開始する

SQLでストアドプロシージャのデバッグを開始-黄色のカーソル位置

これで、デバッグを開始しましたコードをステップスルーできます。

ステップスルースクリプト

コードをステップスルーするには、1)ステップオーバー、2)ステップイン、3)ステップアウトの3つのオプションがあります。 以下のスクリーンショットに示すように、デバッグをクリックすることで、これらのオプションを確認できます:

SQL Serverデバッグ-ステップアウト

SQL Serverデバッグ-ステップアウト
  1. ステップオーバー(F10)

    ステップオーバーは、実行可能スクリプトの次の行にカーソルを移動するだけです。 たとえば、デバッガーがスクリプト内の次の場所にある場合:

    SQL Serverのデバッグ-ステップオーバー-ビフォア

    SQL Server debugging-Step over-before

    Step Overをクリックするか、F10を押すと、カーソルが次の行に移動します:

    SQL Serverデバッグ-ステップオーバー-アフター

    SQL Serverデバッグ-ステップオーバー後
  2. ステップイン(F11)

    これは、最も重要で有用なデバッグ機能の一つです。 ステップインを使用すると、そのストアドプロシージャを呼び出すスクリプトからストアドプロシージャスクリプトに侵入できます。

    Step IntoはStep Overのように動作することに言及することが重要です。 実行されているスクリプトの行にSQL Serverのストアドプロシージャへの呼び出しが含まれていない場合。

    例えば、あなたがでステップインした場合:

    1
    @upperrangeを設定します= 20

    デバッガーは、コントロールを次の行に移動するだけです:

    1
    EXEC spShowOddNumbers@lowerrange,@upperrange

    上記の行には、SQL Serverのストアドプロシージャへの呼び出しが含まれています。 このスクリプト行にステップインすると、次の図に示すように、デバッガーは’spShowOddNumbers’ストアドプロシージャのスクリプトに移動します。

    SQL Serverデバッグ-ステップイン

    SQL Serverデバッグ-ステップイン
  3. ステップアウト(Shift+F11)

    ステップアウトはステップインの反対です。 SQL Serverのストアドプロシージャ内にいて、ストアドプロシージャを呼び出すスクリプトに戻りたい場合は、Step Outを使用できます。 たとえば、”ステップオーバー”をクリックすると:

    1
    WHILE(@LowerRange&lt;@UpperRange)

    デバッガーは、関数を呼び出すスクリプト、つまり

    SQL Server debugging-Step outに戻ります

    SQL Serverデバッグ-ステップアウト

Run To Cursor

デバッグオプションは一度に1行ずつ実行します。 デバッガーにスキップさせたいループや長いコードがある場合は、’Run To Cursor’オプションを使用できます。

1
WHILE(@LowerRange<@UpperRange)

たとえば、カーソルがSQL Serverのストアドプロシージャの次の行にあり、ループをスキップしてループの後のprintステートメントに移動する場合などです。 以下に示すように、print文に移動して”Run To Cursor”をクリックするだけです:

SQL Serverデバッグ-カーソルへの実行

SQL Serverのデバッグ-カーソルに実行

ループはスキップされ、カーソルはprintステートメントを指します。

ローカルウィンドウ

ローカルウィンドウは、スクリプト内の変数の値を追跡するのに役立ちます。 この例では、スクリプトに2つの変数@LowerRangeと@UpperRangeがあります。 SQL Serverのストアドプロシージャのwhileループの開始時に、@LowerRange変数の値は5であり、@UpperRange変数は次の図に示すように20です:

SQL Serverのデバッグ-ローカルウィンドウ

SQL Serverのデバッグ-ローカルウィンドウ

ループを実行して変数の値を確認すると、@LowerRange変数と@UpperRange変数の両方に値として20が表示されることがわかります。 Localsウィンドウには、変数の名前、値、および型が表示されます。 ローカルウィンドウを使用すると、スクリプトの進行中に変数の値の変更を追跡することが非常に簡単になります。

ローカルウィンドウを誤って閉じて戻したい場合は、以下に示すようにDebug->Windows->Localsに移動するだけです:

SQL Serverデバッグ-ステップオーバーローカル変数

SQL Serverデバッグ-ステップオーバーローカル変数

ウォッチウィンドウ

ウォッチウィンドウは、ローカルウィンドウに非常に似ています。 唯一の違いは、ウォッチウィンドウに変数を追加したり、ウォッチウィンドウから変数を削除したりできることです。

ウォッチウィンドウに変数を追加するには、変数を選択し、右クリックして、次のスクリーンショットに示すように”ウォッチを追加”を選択します:

SSMSでのSQL Serverデバッグ-ウォッチの追加

SSMSでのSQL Serverデバッグ-ウォッチの追加

同様に、変数を削除するには、ウォッチウィンドウで変数の名前を右クリックし、オプションのリストから”ウォッチ 以下に示すように:

SSMSでのSQL Serverデバッグ-ウォッチの削除

SSMSでのSQL Serverデバッグ-ウォッチの削除

コールスタック

コールスタックは、名前が示すように、現在の時点までに実行された呼び出しのスタックを表

SSMSでのSQL Serverデバッグ-コールスタック

SSMSでのSQL Serverデバッグ-コールスタック

上の図のコールスタックの最初の行は、現在spShowOddNumbersストアドプロシージャが実行されており、現時点ではデバッガがこのストアドプロシージャを含むファイルの14行目にあることを示しています。 2行目は、このストアドプロシージャがSqlquery2の7行目のスクリプトから呼び出されたことを示しています。sqlファイル。

イミディエイトウィンドウ

イミディエイトウィンドウはコンソールウィンドウに似ています。 たとえば、イミディエイトウィンドウ内で数学演算を実行したり、変数の値をチェックしたりすることができます。 次のスクリーンショットには、イミディエイトウィンドウの例が含まれています。

SSMS-immediateウィンドウでのSQL Serverデバッグ

SSMS-immediateウィンドウでのSQL Serverデバッグ

注:clsコマンドはイミディエイトウィンドウをクリアします。

ブレークポイント

ブレークポイントは、任意のプログラミング言語で最も一般的に使用されるデバッグツールの一つです。 ブレークポイントを使用すると、デバッガーがコードの実行を停止する場所を指定できます。 これらは、コードのすべての行をデバッグするのではなく、コード内の特定の場所で変数のステータスをチェックしたい場合に特に便利です。

コードにブレークポイントを配置するには、ブレークポイントを配置するスクリプトの行の左側にある灰色の領域を右クリックします。 または、f9キーを押すと、自動的に行にブレークポイントが追加されます。 もう一度F9キーを押すと、ブレークポイントが削除されます。

SSMSでのSQL Serverデバッグ-ブレークポイント

SSMSでのSQL Serverデバッグ-ブレークポイント

上の図では、SQL Serverの”spShowOddNumbers”ストアドプロシージャを実行する行にブレークポイントが追加されていることがわかります。 さて、このスクリプトをデバッグします。 デバッガーがスクリプトの最初の行から開始されることがわかります。

SSMSでのSQL Serverデバッグ-スクリプトの最初の行から始まるデバッガ

SSMSでのSQL Serverデバッグ-スクリプトの最初の行から始まるデバッガ

ALT+F5を押すか、デバッグメニューに再度移動してデバッグ->続行をクリックします。 次の行をデバッグする代わりに、デバッガはブレークポイントを持つ最も近い行にまっすぐにジャンプします。SSMSでのSQL Serverデバッグ-ウォッチの追加-ALT+F5を押します

SSMSでのSQL Serverデバッグ-ウォッチの追加-ALT+F5を押します

条件付きブレークポイントを作成することもできます。 条件付きブレークポイントは、指定された条件が満たされた場合にのみヒットします。

ブレークポイントに条件を指定するには、ブレークポイントを右クリックし、下の図に示すように”条件”を選択します:

SSMS-ConditionsでSQL Serverストアドプロシージャをデバッグする

SSMS-Conditions

でSQL Serverストアドプロシージャをデバッグすると、ブレークポイントがヒットする前に満たす条件を指定できる新しいウィンドウが開きます。 @LowerRangeが15より大きい場合にのみこのブレークポイントをヒットさせたい場合は、下の画像に示すように、これを条件として追加できます:

SSMSでSQL Serverストアドプロシージャをデバッグする-条件の変数を設定する

結論

この記事では、Microsoft SQL Server Management StudioがSQL Serverでスクリプトまたはストアドプロシージャをデバッグするために提供するさまざまなオプションについて説明しました。

ベンからの他の偉大な記事

SQL Serverの組み込み関数を使用し、ユーザー定義のスカラー関数を作成する方法

ウィンドウ関数を使用する方法

SQL Server Management Studio(SSMS)

  • 著者
  • 最近の投稿
ベン-リチャードソン
ベン-リチャードソンは、英国のSQLトレーニングの大手プロバイダーであるAcuity Trainingを運営しています。 入門コースから高度な管理やデータウェアハウスのトレーニングに至るまで、SQLトレーニングのフルレンジを提供しています–詳細はこちらを参照してくださ Acuityはロンドンとサリー州ギルフォードに事務所を持っている。 さんのブログ
ベン-リチャードソンのすべての投稿を見る

ベン-リチャードソン
ベン-リチャードソンによる最新の投稿(すべてを見る)
  • Power BIレポートテーマの操作–2021年2月25日
  • Power BI:ウォーターフォールチャートと組み合わせたビジュアル–2021年1月19日
  • Power BI: 条件付き書式設定とデータの色の動作-1月14, 2021