ストアド プロシージャで動的 SQL を使用する必要がある場合は、次のようにします。ビットフィールドである debug の入力変数を追加します。 0 の場合は exec ステートメントが処理され、1 の場合は代わりに print ステートメントが取得されます。デバッグに似たようなことをすることをお勧めします。実行する代わりに、SQL の結果を出力するか、ループで発生しているように見えるため、SQl をテーブルに挿入する可能性があります。次に、構築された sql に目を通し、どこで問題が発生したかを確認できます。
Declare debug bit set debug = 1 ... if debug = 1 Begin Print @SQL End Else Begin Exec (@sql) End
プレ>または
mydynamiccode_logging という名前のテーブルを作成します (max sql ステートメントと同じ長さの sql 列、rundatecolumn、および必要と思われるその他の列を使用します (sql ステートメント、ユーザー、アプリケーションを構成するために使用される入力変数を検討します)。複数の人がこのコードを使用している場合)
exec ステートメントを実行する前に、次のように実行します:
insert mydynamiccode_logging (sql, rundate) values (@sql, getdate())
プレ>また、デバッグ ビット フィールドを追加して、デバッグ モードに変更したときにのみログを記録することも、常にログを記録することもできます。これは、システムと、これにかかる余分な時間と、システムの残りの部分がどれだけ非難されているかによって異なります。ロギングによって製品の速度を大幅に低下させたくありません。