T-SQLのデバッグ出力

T-SQLをデバッグする際、Javascriptの alert(); 関数や console.log などのSQLスクリプトやストアドプロシージャのテストやデバッグ時に値を出力するために使用できますか?

11
プリントステートメント?またはtempテーブル変数のthge値を見るselect文を書くだけです
追加された 著者 Charles Bretana,

4 答え

はい、それは PRINT です。ここをクリック:

http://msdn.microsoft.com/en-us/library/ms176047.aspx

10
追加された
私はなぜCTEが無限ループに入ったのかを理解するためにprintステートメントのようなものが必要でした。
追加された 著者 silentAmbassador,

PRINTを使用してログに出力することができますが、私は個人的には、PRINT出力が常に画面にすぐに表示されるわけではないので、重要度の低いRAISERRORを使用することを好みます。特にロングニングSPで。一方、このようなものはすぐに印刷されます:

RAISERROR ('My Message', 10, 1)

名前ERRORに惑わされないでください。重大度10のエラーは害はありません。

CTEに関しては、あなたは自己参照Common Table Expressionsに問題があると思います。しかし、再帰的なCTEの実行にPRINT文を挿入する方法がないことを知っておくべきです。
これらをデバッグするには、通常、反復ごとにインクリメントされる結果セットに追加の「反復インデックス」列を追加します。状況を評価するのに役立つ他の列もあります。結果セットの残りの部分を調べると、通常は良い見識が得られます。 IDX colのようなもの。他の列は、結合条件を調べて何が間違っているかを調べるのに役立ちます:

WITH x AS (
    SELECT 1 AS IDX, A._ID as ID_A, NULL as ID_B
    FROM MYTABLE A
    WHERE A._ID = 6

    UNION ALL

    SELECT X.IDX + 1, A._ID, B._ID
    FROM MYTABLE B INNER JOIN X ON B._ID = X._ID + 1
    WHERE B._ID < 20

)
SELECT * 
FROM X
9
追加された

PRINT文が役立ちます。結果ペインに出力を与えるPRINTの代わりに、デバッグ出力をテーブルに挿入することがあります。

新しいバージョンのSQL(2008および2008R2)にはデバッグオプションがあります。 Visual StudioでC#プロジェクトをデバッグするだけではなく、かなり良いです。ステップバイステップで行くことができ、可変ウォッチリストを作成することもできます。

1
追加された

私は以下のようにヒント "NOWAIT"と一緒に "RAISERROR"命令を使用します:

RAISERROR('My message here', 10, 1) WITH NOWAIT

この命令は、時間内にメッセージを表示します。

1
追加された