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 Serverでストアドプロシージャを呼び出しているウィンドウでデバッガを起動すると、次のように:
これで、デバッグを開始しましたコードをステップスルーできます。
ステップスルースクリプト
コードをステップスルーするには、1)ステップオーバー、2)ステップイン、3)ステップアウトの3つのオプションがあります。 以下のスクリーンショットに示すように、デバッグをクリックすることで、これらのオプションを確認できます:
- ステップオーバー(F10)
ステップオーバーは、実行可能スクリプトの次の行にカーソルを移動するだけです。 たとえば、デバッガーがスクリプト内の次の場所にある場合:
Step Overをクリックするか、F10を押すと、カーソルが次の行に移動します:
- ステップイン(F11)
これは、最も重要で有用なデバッグ機能の一つです。 ステップインを使用すると、そのストアドプロシージャを呼び出すスクリプトからストアドプロシージャスクリプトに侵入できます。
Step IntoはStep Overのように動作することに言及することが重要です。 実行されているスクリプトの行にSQL Serverのストアドプロシージャへの呼び出しが含まれていない場合。
例えば、あなたがでステップインした場合:
1@upperrangeを設定します= 20デバッガーは、コントロールを次の行に移動するだけです:
1EXEC spShowOddNumbers@lowerrange,@upperrange上記の行には、SQL Serverのストアドプロシージャへの呼び出しが含まれています。 このスクリプト行にステップインすると、次の図に示すように、デバッガーは’spShowOddNumbers’ストアドプロシージャのスクリプトに移動します。
- ステップアウト(Shift+F11)
ステップアウトはステップインの反対です。 SQL Serverのストアドプロシージャ内にいて、ストアドプロシージャを呼び出すスクリプトに戻りたい場合は、Step Outを使用できます。 たとえば、”ステップオーバー”をクリックすると:
1WHILE(@LowerRange<@UpperRange)デバッガーは、関数を呼び出すスクリプト、つまり
Run To Cursor
デバッグオプションは一度に1行ずつ実行します。 デバッガーにスキップさせたいループや長いコードがある場合は、’Run To Cursor’オプションを使用できます。
1
|
WHILE(@LowerRange<@UpperRange)
|
たとえば、カーソルがSQL Serverのストアドプロシージャの次の行にあり、ループをスキップしてループの後のprintステートメントに移動する場合などです。 以下に示すように、print文に移動して”Run To Cursor”をクリックするだけです:
ループはスキップされ、カーソルはprintステートメントを指します。
ローカルウィンドウ
ローカルウィンドウは、スクリプト内の変数の値を追跡するのに役立ちます。 この例では、スクリプトに2つの変数@LowerRangeと@UpperRangeがあります。 SQL Serverのストアドプロシージャのwhileループの開始時に、@LowerRange変数の値は5であり、@UpperRange変数は次の図に示すように20です:
ループを実行して変数の値を確認すると、@LowerRange変数と@UpperRange変数の両方に値として20が表示されることがわかります。 Localsウィンドウには、変数の名前、値、および型が表示されます。 ローカルウィンドウを使用すると、スクリプトの進行中に変数の値の変更を追跡することが非常に簡単になります。
ローカルウィンドウを誤って閉じて戻したい場合は、以下に示すようにDebug->Windows->Localsに移動するだけです:
ウォッチウィンドウ
ウォッチウィンドウは、ローカルウィンドウに非常に似ています。 唯一の違いは、ウォッチウィンドウに変数を追加したり、ウォッチウィンドウから変数を削除したりできることです。
ウォッチウィンドウに変数を追加するには、変数を選択し、右クリックして、次のスクリーンショットに示すように”ウォッチを追加”を選択します:
同様に、変数を削除するには、ウォッチウィンドウで変数の名前を右クリックし、オプションのリストから”ウォッチ 以下に示すように:
コールスタック
コールスタックは、名前が示すように、現在の時点までに実行された呼び出しのスタックを表
上の図のコールスタックの最初の行は、現在spShowOddNumbersストアドプロシージャが実行されており、現時点ではデバッガがこのストアドプロシージャを含むファイルの14行目にあることを示しています。 2行目は、このストアドプロシージャがSqlquery2の7行目のスクリプトから呼び出されたことを示しています。sqlファイル。
イミディエイトウィンドウ
イミディエイトウィンドウはコンソールウィンドウに似ています。 たとえば、イミディエイトウィンドウ内で数学演算を実行したり、変数の値をチェックしたりすることができます。 次のスクリーンショットには、イミディエイトウィンドウの例が含まれています。
注:clsコマンドはイミディエイトウィンドウをクリアします。
ブレークポイント
ブレークポイントは、任意のプログラミング言語で最も一般的に使用されるデバッグツールの一つです。 ブレークポイントを使用すると、デバッガーがコードの実行を停止する場所を指定できます。 これらは、コードのすべての行をデバッグするのではなく、コード内の特定の場所で変数のステータスをチェックしたい場合に特に便利です。
コードにブレークポイントを配置するには、ブレークポイントを配置するスクリプトの行の左側にある灰色の領域を右クリックします。 または、f9キーを押すと、自動的に行にブレークポイントが追加されます。 もう一度F9キーを押すと、ブレークポイントが削除されます。
上の図では、SQL Serverの”spShowOddNumbers”ストアドプロシージャを実行する行にブレークポイントが追加されていることがわかります。 さて、このスクリプトをデバッグします。 デバッガーがスクリプトの最初の行から開始されることがわかります。
ALT+F5を押すか、デバッグメニューに再度移動してデバッグ->続行をクリックします。 次の行をデバッグする代わりに、デバッガはブレークポイントを持つ最も近い行にまっすぐにジャンプします。SSMSでのSQL Serverデバッグ-ウォッチの追加-ALT+F5を押します
条件付きブレークポイントを作成することもできます。 条件付きブレークポイントは、指定された条件が満たされた場合にのみヒットします。
ブレークポイントに条件を指定するには、ブレークポイントを右クリックし、下の図に示すように”条件”を選択します:
でSQL Serverストアドプロシージャをデバッグすると、ブレークポイントがヒットする前に満たす条件を指定できる新しいウィンドウが開きます。 @LowerRangeが15より大きい場合にのみこのブレークポイントをヒットさせたい場合は、下の画像に示すように、これを条件として追加できます:
結論
この記事では、Microsoft SQL Server Management StudioがSQL Serverでスクリプトまたはストアドプロシージャをデバッグするために提供するさまざまなオプションについて説明しました。
ベンからの他の偉大な記事
SQL Serverの組み込み関数を使用し、ユーザー定義のスカラー関数を作成する方法
ウィンドウ関数を使用する方法
SQL Server Management Studio(SSMS)
- 著者
- 最近の投稿
ベン-リチャードソンのすべての投稿を見る
- Power BIレポートテーマの操作–2021年2月25日
- Power BI:ウォーターフォールチャートと組み合わせたビジュアル–2021年1月19日
- Power BI: 条件付き書式設定とデータの色の動作-1月14, 2021