web-dev-qa-db-ja.com

sysjobhistory「sql_severity」コード

Sysjobhistoryテーブルのさまざまな「sql_severity」コードの意味はどこで確認できますか?

たとえば、0はどういう意味ですか?

「0は実際のエラーではない」として0のレポートを除外するレポートを継承しましたか?

グーグルでMSDNなどを見ましたが、運が悪かったです。

3
Andrew Duffy

ここ から、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ステップでジョブを作成して実行することで、これを自分で試すことができます。

2
Jon Seigel

重大度コードのリストは、MSDNのここにあります。 データベースエンジンエラーの重大度

また、上記のリンクに記載されているように、ゼロ(0)は実際のエラーではないとマークされます。

ステータス情報を返すか、重大ではないエラーを報告する情報メッセージ。データベースエンジンは、重大度が0から9のシステムエラーを発生させません。

1
user507