2016-08-25 4 views
2

実行中のクエリの変数内部の値を確認する方法はありますか。何時間も実行されているループがあるとしましょう。ループの開始(@start)のためにクエリで明示的に設定された変数の値を確認したい。SQL文の変数値を実行しているSniff?

はい、これは、プロシージャの処理(最初の値の挿入/更新など)を調べることによって演繹的推論によって判断できますが、実際に実行中のクエリを掘り起こす方法を探しています。

+0

を通じてたぶん代わりに、あなたがループの退治にその努力をすべきである実行中にループを検査に力を入れ、1〜重症度とメッセージのデフォルトで0に設定されています。 –

+0

'SQL Server Profiler'はループ内で' Print'または 'Select'ステートメントを追加する必要があります。 –

+0

@SeanLangeコメントのおかげで、一度に1つの挿入しか許さないベンダコード(トリガ)トリガーを破る。怠惰がここで評価されないと仮定します。 – SQLMason

答えて

1

は0〜18を介して= 10 <

DECLARE @i INT = 0; 
DECLARE @out VARCHAR(4); 

WHILE @i < 100 
BEGIN 
    SET @i = @i + 1; 
    SET @out = CAST(@i AS VARCHAR(4)); 
    RAISERROR (@out, 1, 0) WITH NOWAIT; 

    WAITFOR DELAY '00:00:0.250'; -- wait 250 milliseconds 
END 

重大度レベルは、任意のユーザによって指定することができる重症度RAISERROR(...) WITH NOWAITを試してみてください。

TRYブロックでRAISERRORの重大度が11以上になると、関連するCATCHブロックに制御が移ります。 RAYERRORがTRYブロックのスコープの外で実行された場合、またはTRYブロックの重大度が10以下の場合、エラーが呼び出し元に返されます。

@@ERRORは10

+0

それはそれを行うための興味深い方法です。値の印刷と同様です。私は、これに情報を埋め込むことを十分に考えないと思ったクエリからこれを行う方法を望んでいました。 – SQLMason

関連する問題