ストアドプロシージャ デバッグ 変数をチェックしたいときはテーブルに出力する

ストアドプロシージャ デバッグ 変数をチェックしたいときはテーブルに出力する

ストアドプロシージャがいくつも入れ子状態になっていると変数やテーブルに挿入したデータの値が正しいかを調べる必要があります。

ストアドプロシージャ単体テストなら、必要な変数を与えてPRINT文を出力させれば早いのだけれど、
全体を通してデバッグしたいのですが、簡単に出力する方法を知りません。

変数をチェックしたいときはテーブルに出力する

SQLSERVERSTUDIOにはProfilerがあり、OUTPUTを出力することができますが、入れ子状態になっているストアドプロシージャの場合は、わざわざそのOUTPUTを入れる必要があります。
そこで、変数をチェックしたいストアドプロシージャに、デバッグ用のテーブルを作成して、そのテーブルに各種情報をINSERTします。
 この情報には、ストアドプロシージャ名、時刻を入れるようにしておいてどのタイミング、どのストアドプロシージャで登録された変数かをチェックするようにします。
テーブルは事前にデバッグ用のテーブルを作ってもよいし、権限があればストアドプロシージャで管理して不要なときは削除すればOK.私は事前にデバッグ用のテーブルを作ってそのテーブルにいろいろな情報をCONVERT(nvarchar,変数)みたいにして文字列として挿入しました。

そして、Profilerでもストアドプロシージャが実行されているかをチェックします。
できればリアルタイムで追っかけるほうがわかりやすい。

デバッグ用のテーブルに値を出力すればいいというのに気づくのに3年もかかった。勘の鈍いおっさん。
デバッグのやり方がわかると、なんでこんな簡単なことに気づかなかったのかと思い知らされる。
なんで気づかなかったか?それは坊やだから

こちらの記事もどうぞ