18

SQLGetDiagRecはネイティブ エラー コードを返します。SQL Server 2012 のエラー コードの概要はどこにありますか? MSDN で何も見つかりませんでした。

4

5 に答える 5

35
use master
select * from sysmessages
于 2012-11-27T12:25:09.623 に答える
12

インターネットで個々のコードのリストを見つけることができません。ただし、MSDNで重大度レベルのリストを見つけ ました。それらは次のとおりです。

重大度/説明

  • 0 ~ 9: ステータス情報を返すか、重大ではないエラーを報告する情報メッセージ。データベース エンジンは、重大度が 0 ~ 9 のシステム エラーを発生させません。
  • 10: ステータス情報を返すか、重大ではないエラーを報告する情報メッセージ。互換性の理由から、データベース エンジンは重大度 10 を重大度 0 に変換してから、呼び出し元のアプリケーションにエラー情報を返します。
  • 11-16: ユーザーが修正できるエラーを示します。
  • 11: 指定されたオブジェクトまたはエンティティが存在しないことを示します。
  • 12: 特別なクエリ ヒントのためにロックを使用しないクエリの特別な重大度。場合によっては、これらのステートメントによって実行される読み取り操作によって、データの一貫性が失われる可能性があります。これは、一貫性を保証するためにロックが行われないためです。
  • 13: トランザクションのデッドロック エラーを示します。
  • 14: アクセス許可が拒否されたなど、セキュリティ関連のエラーを示します。
  • 15: Transact-SQL コマンドの構文エラーを示します。
  • 16: ユーザーが修正できる一般的なエラーを示します。
  • 17-19: ユーザーが修正できないソフトウェア エラーを示します。システム管理者に問題を通知してください。
  • 17: ステートメントにより、SQL Server のリソース (メモリ、ロック、データベースのディスク領域など) が不足したか、システム管理者によって設定された制限を超えたことを示します。
  • 18: データベース エンジン ソフトウェアに問題があることを示しますが、ステートメントの実行は完了し、データベース エンジンのインスタンスへの接続は維持されます。重大度レベル 18 のメッセージが発生するたびに、システム管理者に通知する必要があります。
  • 19: 構成不可能なデータベース エンジンの制限を超え、現在のバッチ プロセスが終了したことを示します。重大度が 19 以上のエラー メッセージは、現在のバッチの実行を停止します。重大度レベル 19 のエラーはまれであり、システム管理者または主要なサポート プロバイダーが修正する必要があります。重大度レベル 19 のメッセージが表示された場合は、システム管理者に連絡してください。重大度レベルが 19 ~ 25 のエラー メッセージがエラー ログに書き込まれます。
  • 20-24: システムの問題を示し、致命的なエラーです。これは、ステートメントまたはバッチを実行しているデータベース エンジン タスクが実行されていないことを意味します。タスクは、何が発生したかに関する情報を記録してから終了します。ほとんどの場合、データベース エンジンのインスタンスへのアプリケーション接続も終了する可能性があります。この場合、問題によってはアプリケーションが再接続できない場合があります。この範囲のエラー メッセージは、同じデータベース内のデータにアクセスするすべてのプロセスに影響を与える可能性があり、データベースまたはオブジェクトが破損していることを示している可能性があります。重大度レベルが 19 ~ 24 のエラー メッセージがエラー ログに書き込まれます。
  • 20: ステートメントに問題が発生したことを示します。この問題は現在のタスクにのみ影響を与えているため、データベース自体が破損している可能性は低いです。
  • 21: 現在のデータベースのすべてのタスクに影響する問題が発生しましたが、データベース自体が破損している可能性は低いことを示します。
  • 22: メッセージで指定されたテーブルまたはインデックスが、ソフトウェアまたはハードウェアの問題によって破損していることを示します。重大度レベル 22 のエラーはほとんど発生しません。発生した場合は、DBCC CHECKDB を実行して、データベース内の他のオブジェクトも破損しているかどうかを確認します。問題は、ディスク自体ではなく、バッファ キャッシュのみにある可能性があります。その場合は、データベース エンジンのインスタンスを再起動すると問題が修正されます。作業を続行するには、データベース エンジンのインスタンスに再接続する必要があります。それ以外の場合は、DBCC を使用して問題を修復してください。場合によっては、データベースを復元する必要があります。データベース エンジンのインスタンスを再起動しても問題が解決しない場合、問題はディスクにあります。エラー メッセージで指定されたオブジェクトを破棄すると、問題が解決する場合があります。例えば、
  • 23: ハードウェアまたはソフトウェアの問題により、データベース全体の整合性に問題があることを示します。重大度レベル 23 のエラーはほとんど発生しません。発生した場合は、DBCC CHECKDB を実行して損傷の程度を判断します。問題は、ディスク自体ではなく、キャッシュのみにある可能性があります。その場合は、データベース エンジンのインスタンスを再起動すると問題が修正されます。作業を続行するには、データベース エンジンのインスタンスに再接続する必要があります。それ以外の場合は、DBCC を使用して問題を修復してください。場合によっては、データベースを復元する必要があります。
  • 24: メディア障害を示します。システム管理者がデータベースを復元する必要がある場合があります。また、ハードウェア ベンダーに連絡する必要がある場合もあります。
于 2012-11-27T14:59:01.343 に答える
6

MS SQL Server 2008 R2 のコードを見つけましたが、それらのほとんどはそれ以降のバージョンにも当てはまります: http://technet.microsoft.com/en-us/library/cc645603(v=sql.105).aspx

于 2013-12-14T15:56:51.330 に答える
3

私自身もリストを探していたところ、次のステートメントを実行することで、マスター DB からすべてを表示できることがわかりました。

SELECT * FROM sysmessages
于 2015-09-04T15:16:50.300 に答える
0

SQL Server 2005 以降では、これを使用できます。

SELECT * FROM sys.messages

他の人が述べたように、次のものも使用できます(SQL Server 2000で利用可能):

SELECT * FROM sysmessages
于 2017-05-18T17:24:04.557 に答える