dotnet:sqlexception

SqlException クラス (System.Data.SqlClient)

 SqlException の Number に設定される番号の種類は以下の通りである。

 100以下はSQLServerに接続する前のエラーであり、.NET Framework 1.1 の場合は System.Data.SqlClient.TdsParser.ProcessNetlibError メソッド内で、以下の表のような判定を行って SQLError インスタンスを生成している。
 ※.NET Framework 2.0 の場合は実装が変わっており、TdsParser.ProcessNetlibError メソッド自体が存在しない。

 20以下の番号はSystem.Data.SqlClient.TdsEnums(private class)に定義されている番号が設定される。

番号 TdsEnums定数 リソース名 メッセージ
-3public const short ZERO_BYTES_READ = -3; SQL_ZeroBytes サーバーから 0 バイトを読み取りました。
-2public const short TIMEOUT_EXPIRED = -2; SQL_Timeout タイムアウトに達しました。操作が完了する前にタイムアウト期間が過ぎたか、またはサーバーが応答していません。
-1public const short UNKNOWN_ERROR = -1; SQL_Unknown 原因不明のエラーです。
1public const short NE_E_NOMEMORY = 0x01; SQL_InsufficientMemory メモリが不足しています。
2public const short NE_E_NOACCESS = 0x02; SQL_AccessDenied アクセスが拒否されました。
3public const short NE_E_CONNBUSY = 0x03; SQL_ConnectionBusy 接続がビジーです。
4public const short NE_E_CONNBROKEN = 0x04; SQL_ConnectionBroken 接続が壊れています。
5public const short NE_E_TOOMANYCONN = 0x05; SQL_ConnectionLimit 接続時間が制限を越えました。
6public const short NE_E_SERVERNOTFOUND = 0x06; SQL_ServerNotFound 指定された SQL Server が見つかりません : {0}
7public const short NE_E_NETNOTSTARTED = 0x07; SQL_NetworkNotFound ネットワークが開始されていません。
8public const short NE_E_NORESOURCE = 0x08; SQL_InsufficientResources ネットワーク リソースが不足しています。
9public const short NE_E_NETBUSY = 0x09; SQL_NetworkBusy ネットワークがビジー状態です。
10public const short NE_E_NONETACCESS = 0x0A; SQL_NetworkAccessDenied ネットワーク アクセスが拒否されました。
11public const short NE_E_GENERAL = 0x0B; SQL_GeneralError ネットワークの一般エラーです。ネットワーク ドキュメントを確認してください。
12public const short NE_E_CONNMODE = 0x0C; SQL_IncorrectMode 接続モードが間違っています。
13public const short NE_E_NAMENOTFOUND = 0x0D; SQL_NameNotFound ディレクトリ サービスに名前が見つかりませんでした。
14public const short NE_E_INVALIDCONN = 0x0E; SQL_InvalidConnection 接続が無効です。
15public const short NE_E_NETDATAERR = 0x0F; SQL_ReadWriteError ネットワーク データを読み取り中、または書き込み中にエラーが発生しました。
16public const short NE_E_TOOMANYFILES = 0x10; SQL_TooManyHandles 開かれているファイル ハンドルが多すぎます。
17public const short NE_E_SERVERERROR = 0x11; SQL_SevereError 現在のコマンドでサーバー エラーが発生しました。結果は破棄しなければなりません。
18public const short NE_E_SSLSECURITYERROR = 0x12; SQL_SSLError SSL セキュリティ エラーです。
19public const short NE_E_ENCRYPTIONON = 0x13; SQL_EncryptionError SQL Server では暗号化の設定をオンにする必要があります。
20public const short NE_E_ENCRYPTIONNOTSUPPORTED = 0x14; SQL_EncryptionNotSupported SQL Server でサポートされていない暗号化です。


 21、および、101以上の番号は SQLServer の master データベースの dbo.sysmessages テーブルに定義されているものが発生する。
 53などのように winerror.h に定義されている Win32エラーコードが設定される場合もある。

 [SQL]

USE master
SELECT * FROM dbo.sysmessages WHERE msglangid = 1041

select sysmessages

で、結局何を信用すればいいか?
.NET Framework 2.0 以降のデータプロバイダは、SQL Server システム エラー メッセージ(1~999)に記載されている動作は保障しているハズである。

参考文献:
SQL Exception because of a timeout
SQL Server システム エラー メッセージ(1~999)

  • dotnet/sqlexception.txt
  • 最終更新: 2019/05/18 02:23
  • by 非ログインユーザー