サーバーからの結果受信時にトランスポートレベルのエラーが発生した

SQL Serverのエラーが発生しています。

トランスポートレベルのエラーが発生しました

サーバーから結果を受け取る際に サーバーから結果を受信すると(プロバイダ。共有メモリ プロバイダー、エラー。0 - そのハンドルは 無効です)

SQL Server 2008 SP1、Windows 2008 Standard 64bitを使用しています。

.Net 4.0のWebアプリケーションです。サーバーにリクエストがあると発生します。断続的に発生します。どうしたら解決できるでしょうか?

質問へのコメント (21)

データベース接続は、データベースサーバーによって閉じられます。 接続はアプリの接続プールで有効なままです。その結果、共有接続文字列を取得して実行しようとすると、データベースに到達できません。 Visual Studioを開発している場合は、タスクバーの一時的なWebサーバーを閉じるだけです。

生産中に発生した場合、Webサイトのアプリケーションプールをリセットすると、接続プールがリサイクルされます。

解説 (2)

コマンドプロンプトで以下のコマンドを実行してみてください。

netsh interface tcp set global autotuning=disabled

これにより、ネットワークスタックのオートスケーリング機能がオフになります。

解説 (7)

私も同じ問題を抱えていました。 Visual Studioを再起動すると、問題が修正されました。

解説 (0)

IISを使用していない人のために、Visual Studio 2010でデバッグするときにこの問題がありました。 私はすべてのデバッガープロセスを終了しました:問題を解決したWebDev.WebServer40.EXE。

解説 (2)

必要なのは、ASP.NET開発サーバーを停止して、プロジェクトを再度実行することだけです。

解説 (0)

トランスポートレベルのエラーは、多くの場合、壊れているSQLサーバーへの接続にリンクされています。 ... 通常ネットワーク。

Timeout Expiredは通常、SQLクエリの実行に時間がかかりすぎる場合にスローされます。

したがって、いくつかのオプションは次のようにすることができます。

1。 VPN(使用されている場合)またはその他のツールでの接続を確認します。 2。 IISを再起動します。 3。 マシンを再起動します。 4。 sqlクエリを最適化します。

解説 (1)

このエラーの詳細を示すMSDNブログを見てください。

接続の削除。 。 接続プーラーは、接続後にプールから接続を削除します。 長い間アイドル状態であったか、プーラーがそれを検出した場合。 サーバーとの接続が切断されました。 。 切断された接続は、試行した後にのみ検出できることに注意してください。 サーバーと通信します。 接続が見つかった場合は、いいえ。 サーバーに接続されている時間が長くなると、無効としてマークされます。 。 無効な接続は、接続プールから削除されるのは、次の場合のみです。 それらは閉じているか、埋め立てられています。 。 。 。 消えたサーバーへの接続が存在する場合、これは。 接続プーラーであっても、プールから接続を引き出すことができます。 切断された接続を検出しておらず、無効としてマークしています。 。 これは、接続を確認するオーバーヘッドが原因です。 まだ有効であれば、プーラーを利用することの利点がなくなります。 サーバーへの別の往復が発生します。 。 これが発生すると、接続を使用する最初の試みが検出されます。 接続が切断され、例外がスローされたこと。 。 基本的にあなたが見ているのは、最後の文の例外です。 。 接続は接続プールから取得され、アプリケーションは取得されます。 物理的な接続がなくなったことを知らない、それを使用する試みです。 物理的な接続がまだそこにあるという仮定の下で行われます。 。 そして、あなたはあなたの例外を取得します。 。 。 。 これにはいくつかの一般的な理由があります。 。 。 。 1。 サーバーが再起動されました。これにより、既存の接続が閉じます。 。 この場合、通常は次の場所にあるSQL Serverログをご覧ください。 C:\ Program Files \ Microsoft SQL Server \< your instance> \ MSSQL \ LOG。 。 起動のタイムスタンプが非常に最近のものである場合、それを疑うことができます。 これがエラーの原因です。 このタイムスタンプと相関するようにしてください。 例外の時間。 。 。 。 2009-04-16 11:32:15.62サーバーログSQL Serverメッセージのファイル。 「C:\ Program Files \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ LOG \ ERORLOG」。 。 。 。 2。 誰かまたは何かが使用されているSPIDを殺しました。 。 繰り返しになりますが、SQL Serverログをご覧ください。 殺害を見つけた場合は、試してみてください。 このタイムスタンプを例外の時間と関連付けます。 。 。 。 2009-04-16 11:34:09.57 spidXXプロセスID XXが殺されました。 ホスト名xxxxx、ホストプロセスID XXXX . 。 。 。 3。 フェイルオーバー(ミラー設定など)が再びあります。SQLServerログをご覧ください。 。 フェイルオーバーがある場合は、このタイムスタンプを時間と相関させるようにしてください。 例外。 。 。 。 2009-04-16 11:35:12.93 spidXXミラー化されたデータベース「< your。 データベース>」により、役割が「PRINCIPAL」から「MIRROR」に変更されています。 フェイルオーバー。

解説 (0)

Microsoft SQL Server Managementを介してデータベースに接続している場合は、すべての接続を閉じて再試行してください。 別のAzure Databaseに接続しているときにこのエラーが発生しましたが、接続を閉じたらうまくいきました。 まだ原因はわかりませんが...。

解説 (1)

これは、常に約5分の操作の後に行われました。 調査したところ、e1iexpressからの警告は常に障害の前に発生していることがわかりました。 これは明らかに、特定のTCP / IPアダプターに関連するエラーです。 しかし、WiFiからハードワイヤードに変更しても影響はありませんでした。

プランBを試して、Visual Studioを再起動しました。 その後、それはうまくいきました。

よく調べてみると、正しく機能しているときに、「スレッド '」というメッセージが表示されていることに気づきました。コード0で終了したのは、以前の試行でランがクラッシュしたほぼ正確な時刻です。 一部のグーグルは、サーバーが(とりわけ)スレッドプールをトリミングしているときにそのメッセージが表示されることを明らかにしています。

おそらくスレッドプールに偽のスレッドがあり、サーバーが「トリミング」しようとするたびにアプリがダウンしました。

解説 (0)

このメッセージは、スクリプトによってSQLサービスが何らかの理由で停止した場合に表示されます。そのため、SQLサービスを再度起動すれば、問題は解決するでしょう。

解説 (1)

これはすべての人に役立つとは限らないことは知っています(知っているかもしれませんが、おそらくそうです)。同じ問題があり、しばらくして、原因がコード自体から何かであることに気づきました。

サーバーに到達しようとしているコンピューターは別のネットワーク内にあり、接続を確立できましたが、その後削除されました。

修正に使用した方法は、静的なルートをコンピューターに追加して、ファイアウォールを通過せずにサーバーに直接アクセスできるようにすることでした。

route add –p YourServerNetwork mask NetworkMask Router 

サンプル:

route add –p 172.16.12.0 mask 255.255.255.0 192.168.11.2 

私はそれが誰かを助けることを願っています、少なくとも手がかりとしてこれを持っている方が良いので、あなたがそれに直面した場合、あなたはそれを解決する方法を知っています。

解説 (0)

Visual Studion 2012開発環境でも同じエラーが発生し、IIS Expressを停止してアプリケーションを再実行すると、動作し始めました。

解説 (0)

私の場合、「SQL Server」サーバーサービスが停止しました。 クエリを実行してエラーを排除できるサービスを再開したとき。

クエリを調べて、クエリによってこのサービスが停止した理由を確認することもお勧めします。

。![ここに画像の説明を入力してください](http://i.stack.imgur.com/dnhXS.png。)

解説 (0)

このエラーで見つけた理由の1つは、接続文字列の「パケットサイズ= xxxxx 」です。 xxxxの値が高すぎる場合は、このエラーが表示されます。 この値を削除して、SQLサーバーに処理させるか、ネットワーク機能に応じて低く保ちます。

解説 (0)

SQLデータベースを復元しようとしていて、[オプション]タブの[チェックボックス]をオンにして確認したときに、それが起こりました。

。![ここに画像の説明を入力してください](http://i.stack.imgur.com/kCn3T.jpg。)

これはスタンドアロンのデータベースサーバーであるため、SSMSを閉じて再度開くだけで問題が解決しました。

解説 (0)

これは、データベースが削除されて再作成されたときに発生します。一部の共有リソースは、データベースがまだ存在することを考慮しているため、実行クエリを再実行して、データベースが再作成された後にテーブルを作成すると、エラーが再び表示されず、 コマンドが正常に完了しました。メッセージはエラーメッセージの代わりに表示されます Msg 233、レベル20、状態0、行0サーバーにリクエストを送信するときにトランスポートレベルのエラーが発生しました。 (プロバイダー:共有メモリプロバイダー、エラー:0-パイプのもう一方の端にプロセスはありません。)

データベースをドロップして再作成する場合は、このエラーを無視し、心配することなくDDLクエリを再実行してください。

解説 (0)

私も同じ問題を抱えていました。 SQL Server LOGを切り捨てて解決しました。 それを確認してから、このソリューションが役立つかどうかを教えてください。

解説 (0)

私にとっての答えは、OSを2008R2から2012R2にアップグレードすることです。iisresetまたはreart apppoolのソリューションは、私には機能しませんでした。 TCP Chimney Offload設定も変更しようとしましたが、サーバーは本番サーバーであるため再起動しませんでした。

解説 (0)

私にとっての解決策はまったく異なっていました。

私の場合、datetimestampパラメーターを必要とするオブジェクトソースがありました。 そのODSパラメータConvertEmptyStringToNullがtrueであったとしても、1/1/0001はSelectMethodに渡されていました。 これにより、その日時がSQLサーバーに渡されたときに、SQL日時オーバーフローの例外が発生しました。

datetime.yearの追加チェックを追加しました。 != 0001そしてそれは私のためにそれを解決しました。

デートタイムのオーバーフローエラーではなく、トランスポートレベルのエラーが発生するのは奇妙です。 とにかく。.

解説 (1)

最近、ビジネスサーバーとデータベースサーバーの間でこのエラーが発生しました。 私たちの解決策は、ネットワークインターフェイスの「IPオフロード」を無効にすることでした。 その後、エラーはなくなりました。

解説 (0)