====== 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定数 ^ リソース名 ^ メッセージ ^ | -3|public const short ZERO_BYTES_READ = -3; |SQL_ZeroBytes |サーバーから 0 バイトを読み取りました。 | | -2|public const short TIMEOUT_EXPIRED = -2; |SQL_Timeout |タイムアウトに達しました。操作が完了する前にタイムアウト期間が過ぎたか、またはサーバーが応答していません。 | | -1|public const short UNKNOWN_ERROR = -1; |SQL_Unknown |原因不明のエラーです。 | | 1|public const short NE_E_NOMEMORY = 0x01; |SQL_InsufficientMemory |メモリが不足しています。 | | 2|public const short NE_E_NOACCESS = 0x02; |SQL_AccessDenied |アクセスが拒否されました。 | | 3|public const short NE_E_CONNBUSY = 0x03; |SQL_ConnectionBusy |接続がビジーです。 | | 4|public const short NE_E_CONNBROKEN = 0x04; |SQL_ConnectionBroken |接続が壊れています。 | | 5|public const short NE_E_TOOMANYCONN = 0x05; |SQL_ConnectionLimit |接続時間が制限を越えました。 | | 6|public const short NE_E_SERVERNOTFOUND = 0x06; |SQL_ServerNotFound |指定された SQL Server が見つかりません : {0} | | 7|public const short NE_E_NETNOTSTARTED = 0x07; |SQL_NetworkNotFound |ネットワークが開始されていません。 | | 8|public const short NE_E_NORESOURCE = 0x08; |SQL_InsufficientResources |ネットワーク リソースが不足しています。 | | 9|public const short NE_E_NETBUSY = 0x09; |SQL_NetworkBusy |ネットワークがビジー状態です。 | | 10|public const short NE_E_NONETACCESS = 0x0A; |SQL_NetworkAccessDenied |ネットワーク アクセスが拒否されました。| | 11|public const short NE_E_GENERAL = 0x0B; |SQL_GeneralError |ネットワークの一般エラーです。ネットワーク ドキュメントを確認してください。 | | 12|public const short NE_E_CONNMODE = 0x0C; |SQL_IncorrectMode |接続モードが間違っています。 | | 13|public const short NE_E_NAMENOTFOUND = 0x0D; |SQL_NameNotFound |ディレクトリ サービスに名前が見つかりませんでした。 | | 14|public const short NE_E_INVALIDCONN = 0x0E; |SQL_InvalidConnection |接続が無効です。 | | 15|public const short NE_E_NETDATAERR = 0x0F; |SQL_ReadWriteError |ネットワーク データを読み取り中、または書き込み中にエラーが発生しました。 | | 16|public const short NE_E_TOOMANYFILES = 0x10; |SQL_TooManyHandles |開かれているファイル ハンドルが多すぎます。 | | 17|public const short NE_E_SERVERERROR = 0x11; |SQL_SevereError |現在のコマンドでサーバー エラーが発生しました。結果は破棄しなければなりません。 | | 18|public const short NE_E_SSLSECURITYERROR = 0x12; |SQL_SSLError |SSL セキュリティ エラーです。 | | 19|public const short NE_E_ENCRYPTIONON = 0x13; |SQL_EncryptionError |SQL Server では暗号化の設定をオンにする必要があります。 | | 20|public 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 {{:dotnet:sqlserver_select_sysmessages.png|select sysmessages}}\\ \\ で、結局何を信用すればいいか?\\ .NET Framework 2.0 以降のデータプロバイダは、[[http://msdn.microsoft.com/ja-jp/library/cc645611.aspx|SQL Server システム エラー メッセージ(1~999)]]に記載されている動作は保障しているハズである。\\ \\ 参考文献:\\ [[http://blog.colinmackay.net/archive/2007/06/23/65.aspx|SQL Exception because of a timeout]]\\ [[http://msdn.microsoft.com/ja-jp/library/cc645611.aspx|SQL Server システム エラー メッセージ(1~999)]]\\