2013-07-12 9 views
12

SSMS 2012を使用して複雑なT-SQLスクリプトをデバッグしたいと考えています。MS SQL Management Studio 2012でデバッグセッション中にテーブル変数のデータを表示するにはどうすればよいですか?

スクリプトをデバッグモードで実行し、ブレークポイントを配置したりスクリプトをステップ実行することはできますが、私のテーブル変数で。

Locals window

コンテキストメニューを介して、または上のクリックすることにより、変数の内容を表示する方法はありません:私はすべてのこれらの変数を参照してくださいが、その値は(table)として示されているLocalsウィンドウで

変数。

私はImmediate Windowを使ってテーブル変数のクエリを実行しようとしましたが、これはうまくいかないようです。

Immediate Window

私はデバッグセッションで私のテーブル変数から値を取得することができますどのように任意のアイデア?

+0

可能な複製を助け[T-SQLでのデバッグ時にテーブル変数の値を確認する方法?](http://stackoverflow.com/questions/1900857/how-to-see -the-of-table-variable-at-t-sqlのデバッグ時間) – Faiz

答えて

12

どこでも、私はテーブル変数を調べることができないと明示的に述べていますが、私はそれが可能であるとは考えていません。 Transact-SQL Debuggerから

ローカルウォッチ。これらのウィンドウには、現在割り当てられているTransact-SQL式が表示されます。 式は、単一のスカラー式に評価されるTransact-SQL句です。 Transact-SQLデバッガは、名前が@@で始まるTransact-SQL変数、パラメータ、または組み込み関数を参照する式の表示をサポートしています。これらのウィンドウには、現在式に割り当てられているデータ値も表示されます。ある

マイ強調は)

、あなただけのスカラーを検査することができます。イミディエイトウィンドウを使用するようにしようとするよう

Limitations on Debugger Command and Featuresは言う:

即時ウィンドウは、このような値に変数を設定すると、表示されますが、あなたはそれで有用な何もできません、データベースを照会することができます。


私は本当に多くのデバッガを使用したことがありません - 私はそれに見てきたたびに、私はこのような制限が発生しました。私はまだ「古いSKOOL」/「printfのは、」デバッグSQLへのアプローチを使用する傾向がある理由です

- 余分SELECT *の自由にテーブルの現在の状態を示すコード、および他の状態を示し、余分なPRINTまたはRAISERRORメッセージ全体を含めますあなたがそれを形にしておくまで、コードを普通に実行してください。

+0

あなたの研究をありがとう、私も結果をもたらさなかった。私はそれが不可能であるとは思っていませんでした。なぜなら、それはデバッガを私の目の中で完全に使えなくするからです。 "old-skool"の問題は、(コード化ポリシーで要求されているように)デバッグ/コメントアウト/到達不能ステートメントを含まないようにコードをちょうど "櫛形"にしてから、それらを再び戻す必要があるということです... –

9

次のコードを使用すると、テーブルの内容がXMLとして表示されます。

DECLARE @v XML = (SELECT * FROM <tablename> FOR XML AUTO) 

SELECTステートメントが返す内容を確認すると便利です。私はそれをテストし、それは動作します。

続きを読むhere

+1

これは動作していません。私は地元のウィンドウで@vを見ることができません。 – Naren

+1

@Narenこれを確認しました。ローカルウィンドウで動作し、@v変数に値が設定されているのがわかります。 SQL Server 2008 R2用のSQL Server管理スタジオを使用しています。 – RBT

+0

"FOR XML"句に "、ROOT( 'rootNodeName')"を追加できます。これにより、単一のルートの下に複数の行が存在する場合は、その行が収集されます。これは正当なXMLドキュメントを作成します。テキストビジュアライザではなくXMLビジュアライザで表示できます。 – JohnL4

1

私は単に私のスクリプトにSELECT文に入れて、それが結果ウィンドウに表示します。..

選択* @VarTableから。

私のコードをステップ実行し、値を表示する選択を押します。 次に、テストが完了するとコメントアウトするか、テストフラグを設定します。

ホープこれはの

関連する問題