Sysjobhistoryテーブルのさまざまな「sql_severity」コードの意味はどこで確認できますか?
たとえば、0はどういう意味ですか?
「0は実際のエラーではない」として0のレポートを除外するレポートを継承しましたか?
グーグルでMSDNなどを見ましたが、運が悪かったです。
ここ から、sql_severity
列は「SQLServerエラーの重大度」です。
この列の値が0の場合、メッセージが返されない(したがって、魔法の値である)か、重大度0のメッセージが返されることを意味します。列がNULL
を許可しないため、これは悪いテーブル設計であると私は主張します。
sql_message_id
列でもほぼ同じです。メッセージが返されない場合、この列には0が含まれます。ただし、この場合、メッセージID 0がないため(SELECT * FROM sys.messages WHERE message_id = 0;
を実行)、純粋に魔法の値です。
sql_severity
列を比較するだけでは、作成者の考えを正確に実行できない可能性があるため、継承したレポートクエリの意図を明確にすることをお勧めします。 (重大度0のエラーが発生することは間違いなくまれですが、ねえ、あなたは尋ねました。)
メッセージを返したステップを検索することになっている場合は、sql_message_id
> 0をチェックする必要があります。前述のように、ジョブステップにsql_severity
が含まれる可能性は十分にあります。 > 0および/またはsql_message_id
> 0で、まだ成功しています。 ****
クエリが失敗したステップを検索することになっている場合は、代わりにrun_status
列を検索する必要があります。
** RAISERROR
を呼び出すだけのT-SQLステップでジョブを作成して実行することで、これを自分で試すことができます。
重大度コードのリストは、MSDNのここにあります。 データベースエンジンエラーの重大度
また、上記のリンクに記載されているように、ゼロ(0)は実際のエラーではないとマークされます。
ステータス情報を返すか、重大ではないエラーを報告する情報メッセージ。データベースエンジンは、重大度が0から9のシステムエラーを発生させません。