エラー メッセージの「無効なバッファーを受け取るクライアントから」SQL Server を使用すると、SQL Server ログに。NET ・ プロバイダ ・ クラス

文書翻訳 文書翻訳
文書番号: 827366
すべて展開する | すべて折りたたむ

現象

Microsoft を使用するとします。NET Framework SqlClient クラスは、次のエラー メッセージ Microsoft で利用します。SQL Server 2000年のエラー ログ:
エラー: 17805、レベル: 20、状態: 3
無効なバッファーをクライアントから受信します。
表示される、次の対応するエラー メッセージ、microsoft。NET Framework クライアントアプリケーションがあります。
生じます。 深刻エラーは、現在のコマンドで発生しました。場合は、結果をする必要があります。破棄

原因

次のシナリオのいずれかの場合にこの現象発生します。true:
  • 使用します。 SqlClient クラスのでは 最終決定します。 メソッドまたは、 C# デストラクターです。
  • 明示的な指定しません。 SQLDbType 列挙を作成する場合は、 SqlParameter オブジェクトです。ときに、明示的な指定しません。 SQLDbType 列挙は、Microsoft です。NET Framework のデータ プロバイダーの SQL Server(SqlClient) の正しい選択しようとしています。 SQLDbType 列挙体が渡されるデータに基づきます。SqlClient で失敗されます。
  • インスタンスを宣言、 SqlClient クラス 静的 C# かに 共有 Visual Basic では。インスタンスは、アプリケーション内の複数のスレッドから同時にアクセスできます。

    メモ ASP です。NET 環境で、またはアプリケーション コードでは、他のスレッドが明示的に作成されますしない場合でも、いくつかの他の環境では、同時にアクセスします。
  • サイズを明示的に指定するパラメーターします。NET Framework コードでは、使用できる最大サイズを超える、SQL Server でのデータ型です。

    たとえば、SQL によるServer Books Online nvarchar 可変長の Unicode 文字データの n 個の文字です。"n"1 から 4000 までの値でなければなりません。サイズを指定する場合は、4000 は、 nvarchar パラメーターに記載されているエラー メッセージが、「現象」記載します。
どのようにこのようなエラーを可能性がありますも、次のコードを示しています発生します。
Stored Procedure
--------------------------

CREATE PROCEDURE spParameterBug @myText Text AS
            Insert Into ParameterBugTable (TextField) Values (@myText)

Code
-------
static void Main(string[] args)
{
       string dummyText=string.Empty;
       for (int n=0; n < /*80*/ 3277; n++)   // change this to 80 to receive the second error that is mentioned earlier in this article.
       {
             dummyText += "0123456789";
       }

        // TO DO: Change data source to match your SQL Server:

       SqlConnection con= new SqlConnection("data source=myserver;Initial Catalog=mydb;Integrated Security=SSPI;persist security info=True;packet size=16384");
       SqlCommand cmd = new SqlCommand("SpParameterBug", con);
      con.Open();
           // Causes error 17805:
      SqlParameter param2 =new SqlParameter("@myText", dummyText);
      cmd.CommandType = CommandType.StoredProcedure;
      cmd.Parameters.Add(param2);
      try
      {
          cmd.ExecuteNonQuery();
      } 
      catch (Exception err)
      {
         Console.WriteLine(err.ToString());
      }

      Console.ReadLine();

}

解決方法

このエラーを解決するには、実行することを確認してください、次の。
  • 使用していない、 SqlClient クラスのでは 最終決定します。 メソッドまたは、 C# デストラクターです。
  • 指定の SqlDbType 列挙体は、 SqlParameter 推論された型がないのでオブジェクトです。
  • 制限内で、パラメーターのサイズを指定する、データを入力します。

関連情報

についての最大サイズを異なるデータ型は、次のマイクロソフト開発ネットワーク (MSDN) Web サイトを参照してください。
.aspx の http://msdn2.microsoft.com/en-us/library/aa276823 (SQL.80)
.aspx の http://msdn2.microsoft.com/en-us/library/aa258271 (SQL.80)

プロパティ

文書番号: 827366 - 最終更新日: 2011年7月30日 - リビジョン: 5.0
キーワード:?
kbprb kbmt KB827366 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:827366
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com