1

定期的な「印刷」ステートメントを含む SQL Server ジョブを実行しているので、ジョブ履歴を調べて何が起こったかを把握できます。しかし、出力は [SQLSTATE 01000] で雑然としています。この出力に収まる量には制限があるため、関心のある情報をできるだけ多くのスペースに収めたいと考えています。

「印刷」コマンドの [SQLSTATE 01000] 出力を抑制する方法はありますか?

4

3 に答える 3

3

問題(申し訳ありませんが「機能」)は、SQLエージェントのPRINTコマンドにあります。この問題を克服するには、「出力」用に1つの列を持つテーブル変数を作成し、スクリプトを進めながらそれを入力し、ジョブの最後にテーブル変数からSELECTを入力します。SQL Agentを介して出力をファイルにパイプすると、ジョブのログが得られます。ジョブのどの時点でもエラーが発生した場合は、終了する前にテーブルの内容をダンプします。(通常、実行するコマンドを実行直前にテーブル変数に含めます)。ジョブの最後にすべてのPRINTステートメントを1つのSELECTステートメントに置き換えるだけで、これらの厄介な[SQLSTATE01000]サフィックスが削除されます。

すべての...くそー...行...

乾杯、ケン

于 2010-11-02T13:58:51.430 に答える
0

あなたはおそらく運が悪いです。これは、PRINT ステートメントの通常の出力です。それらを抑える方法はないと思います。

于 2009-01-20T00:11:42.917 に答える
-1

出力から [SQLSTATE 01000] だけを削除したい場合、または [SQLSTATE 01000] を含むものを削除したい場合は、好ましくありません。したがって、ここに両方の​​方法があります。

Print replace(@PrintThis, '[SQLSTATE 01000]', '');

基本的に、これは [SQLSTATE 01000] を何も置き換えません。

次は CHARINDEX(expression1, expression1 [, start_location]) を使用し、expression2 で expression1 を検索し、見つかった場合はその開始位置を返します。検索は start_location から開始されます。

@result = CHARINDEX('[SQLSTATE 01000]', @PrintThis)
if (@result > 0)
    Print @PrintThis

したがって、CHARINDEX < 0 の場合、文字列 [SQLSTATE 01000] は存在せず、出力されません

あなたがやろうとしていることを見逃した場合は、そのように返信してください。

これが役に立てば幸いです。

ブレット

于 2009-01-27T02:19:01.977 に答える