0

以下のエラーは、別のデータベースに接続する既に開いているプログラムでスローされます

リクエストをサーバーに送信するときにトランスポート レベルのエラーが発生しました。(プロバイダー: TCP プロバイダー、エラー: 0 - 既存の接続がリモート ホストによって強制的に閉じられました。)

プログラムの詳細: SQL Server 2008 をバックエンドとして vb.net を使用して実行されたコード

同じ PC で同時に実行されている同じ exe の 2 つのインスタンスが、1 つのインスタンスによってのみエラーがスローされた

プログラムはSqlConnection(ADO.NET) とADODB接続 (VB6 からアップグレード) の両方を使用し、エラーは両方のタイプの接続によってスローされます

エラーがサーバーのネットワークの問題によるものである場合、正常に動作するプログラムがほとんどないのはなぜですか? プログラムのこの動作の理由を追跡できません

このエラーが発生する理由と、同じインスタンスのいくつかのプログラムでのみ発生する理由を知ることができますか

4

2 に答える 2

0

exe の各インスタンスが接続すると、独自の SQL Server プロセス ID (SPID) が取得されます。エラーが発生したのは、エラーが発生した SQL コマンドを実行しようとする前のある時点で、インスタンスの接続がサーバー レベルで強制終了されたか、ネットワーク レベルで中断されたためです。

SSMS で、SQL Server ログ ファイルを確認します。この例では、SPID を強制終了し、SPID の強制終了がログに記録されました。 ここに画像の説明を入力

ログに記録されたイベントが表示されない場合は、ネットワークの問題に対処している可能性があります。さらにトラブルシューティングを行うには、コードが ADO​​DB 接続を開いた後、エラーが発生する前のどこかに 1 つ以上のブレーク ポイントを設定し、そのインスタンスの SPID がブレーク ポイントで実行されていることを SSMS で確認する必要があります。exec sp_who2は、サーバー上で現在アクティブな SPID をすべて一覧表示するのに適したコマンドです。

于 2012-05-19T13:22:42.470 に答える