差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン
前のリビジョン
dotnet:sqlexception [2009/06/15 18:48] – 作成 ともやんdotnet:sqlexception [2019/05/18 02:23] (現在) – 外部編集 非ログインユーザー
行 2: 行 2:
  SqlException の Number に設定される番号の種類は以下の通りである。  SqlException の Number に設定される番号の種類は以下の通りである。
  
-20未満はSQLServerに接続する前のエラーで、System.Data.SqlClient.TdsEnums(private class)に定義されている番号が設定される。 + 100以下はSQLServerに接続する前のエラーであり.NET Framework 1.1 の場合は System.Data.SqlClient.TdsParser.ProcessNetlibError メソッド内で、以下の表のような判定を行って SQLError インスタンスを生成している。\\ 
-^  番号  ^  補足  ^ + ※.NET Framework 2.0 の場合は実装が変わっており、TdsParser.ProcessNetlibError メソッド自体が存在しない。\\ 
-|  -3|ZeroBytes  | +\\ 
-|  -2|Timeout  | + 20以下の番号はSystem.Data.SqlClient.TdsEnums(private class)に定義されている番号が設定される。 
-|  -1|Unknown  | +^  番号  ^  TdsEnums定数  ^  リソース名  ^  メッセージ  ^ 
-|  1|InsufficientMemory  | +|  -3|public const short ZERO_BYTES_READ = -3;  |SQL_ZeroBytes  |サーバーから 0 バイトを読み取りました。  | 
-|  2|AccessDenied  | +|  -2|public const short TIMEOUT_EXPIRED = -2;  |SQL_Timeout  |タイムアウトに達しました。操作が完了する前にタイムアウト期間が過ぎたか、またはサーバーが応答していません。  | 
-|  3|ConnectionBusy  | +|  -1|public const short UNKNOWN_ERROR = -1;  |SQL_Unknown  |原因不明のエラーです。  | 
-|  4|ConnectionBroken  | +|  1|public const short NE_E_NOMEMORY = 0x01;  |SQL_InsufficientMemory  |メモリが不足しています。  | 
-|  5|ConnectionLimit  | +|  2|public const short NE_E_NOACCESS = 0x02;  |SQL_AccessDenied  |アクセスが拒否されました。  | 
-|  6|ServerNotFound  | +|  3|public const short NE_E_CONNBUSY = 0x03;  |SQL_ConnectionBusy  |接続がビジーです。  | 
-|  7|NetworkNotFound  | +|  4|public const short NE_E_CONNBROKEN = 0x04;  |SQL_ConnectionBroken  |接続が壊れています。  | 
-|  8|InsufficientResources  | +|  5|public const short NE_E_TOOMANYCONN = 0x05;  |SQL_ConnectionLimit  |接続時間が制限を越えました。  | 
-|  9|NetworkBusy  | +|  6|public const short NE_E_SERVERNOTFOUND = 0x06;  |SQL_ServerNotFound  |指定された SQL Server が見つかりません : {0}  | 
-|  10|NetworkAccessDenied  | +|  7|public const short NE_E_NETNOTSTARTED = 0x07;  |SQL_NetworkNotFound  |ネットワークが開始されていません。  | 
-|  11|GeneralError  | +|  8|public const short NE_E_NORESOURCE = 0x08;  |SQL_InsufficientResources  |ネットワーク リソースが不足しています。  | 
-|  12|IncorrectMode  | +|  9|public const short NE_E_NETBUSY = 0x09;  |SQL_NetworkBusy  |ネットワークがビジー状態です。  | 
-|  13|NameNotFound  | +|  10|public const short NE_E_NONETACCESS = 0x0A;  |SQL_NetworkAccessDenied  |ネットワーク アクセスが拒否されました。
-|  14|InvalidConnection  | +|  11|public const short NE_E_GENERAL = 0x0B;  |SQL_GeneralError  |ネットワークの一般エラーです。ネットワーク ドキュメントを確認してください。  | 
-|  15|ReadWriteError  | +|  12|public const short NE_E_CONNMODE = 0x0C;  |SQL_IncorrectMode  |接続モードが間違っています。  | 
-|  16|TooManyHandles  | +|  13|public const short NE_E_NAMENOTFOUND = 0x0D;  |SQL_NameNotFound  |ディレクトリ サービスに名前が見つかりませんでした。  | 
-|  17|ServerError  | +|  14|public const short NE_E_INVALIDCONN = 0x0E;  |SQL_InvalidConnection  |接続が無効です。  | 
-|  18|SSLError  | +|  15|public const short NE_E_NETDATAERR = 0x0F;  |SQL_ReadWriteError  |ネットワーク データを読み取り中、または書き込み中にエラーが発生しました。  | 
-|  19|EncryptionError  | +|  16|public const short NE_E_TOOMANYFILES = 0x10;  |SQL_TooManyHandles  |開かれているファイル ハンドルが多すぎます。  | 
-|  20|EncryptionNotSupported  | +|  17|public const short NE_E_SERVERERROR = 0x11;  |SQL_SevereError  |現在のコマンドでサーバー エラーが発生しました。結果は破棄しなければなりません。  | 
-20り大きい番号は SQLServer の master データベースの dbo.sysmessages テーブルに定義されているものが発生する。 +|  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]\\ 
 +<code sql> 
 +use master 
 +select * from dbo.sysmessages where msglangid = 1041 
 +</code> 
 +{{: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://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)]]\\
  • dotnet/sqlexception.1245059292.txt.gz
  • 最終更新: 2019/05/18 02:23
  • (外部編集)