7

.NET 4.0データベース中心のアプリケーション(シッククライアント、WinForms)をSQL Serverに対して実行しています(主にLinq to Sqlを介して、いくつかのバニラADO.NETが散在しています)。これは、数百の環境(それぞれがお客様のITによって維持されています)に展開されます。スタッフ)。このアプリケーションは、長年使用されていた私の会社のレガシーFoxPro製品を書き直したものです。

このアプリケーションは、次のような断続的な例外がある1つを除いて、すべてのお客様にとって正常に機能しているようです。

System.Data.SqlClient.SqlException(0x80131904):タイムアウトが期限切れになりました。操作が完了する前にタイムアウト期間が経過したか、サーバーが応答していません。

バッチが中止されたため、リクエストの実行に失敗しました。これは、クライアントから送信された中止シグナルが原因であるか、同じセッションで別のリクエストが実行されているため、セッションがビジーになっている可能性があります。

これについてWebで見つけることができるすべて(ここここなど)は、この問題はSP1で解決されたSQLServer2005のバグであると言っています。ただし、このお客様はSQL Server 2008 R2 Expressを使用しています(これは当社によって確認されています。お客様の言葉を受け入れるだけではありません)。さらに、接続プールや分散トランザクションを使用していないため、私が見つけたリンクの関連性はさらに低いようです。

この場合も、問題は断続的(1日に数回)であり、さまざまなワークステーションのすべてで発生します(単一のクライアントの問題ではないことを示しているようです)。従来のFoxProアプリケーションは引き続き環境に存在し、(まったく同じデータベースに対して)正常に動作します。これは、ネットワークまたはデータベースサーバーの問題だけではないことを示しているように見えます。

どんな助けでも大歓迎です。

4

1 に答える 1

3

これらのエラーはCommandTimeout、サーバーが結果を返す前に (デフォルトは 30 秒) に達したことを示します。これはバグを示すものではなく、どの SP もそれを解決できません。これはパフォーマンスの問題 (ほとんどの場合、インデックスが見つからない) であり、パフォーマンスの問題として調査する必要があります。SQLCATパフォーマンス トラブルシューティング フローチャートに従ってみてください。

于 2012-08-03T17:25:31.027 に答える