非常に簡単なクエリ(通常は非常に速い)を実行する簡単な.Net Webサービスを作成しました。クエリは次のようなものです。.Net 2.0とSQL Server 2008のハングプロセス
SELECT v.email
FROM dbo.Reporting r
INNER JOIN dbo.Reporting_EmailList el ON r.reportID = el.reportID
INNER JOIN OtherDB.dbo.V_ActiveDir v ON el.userGUID = v.objectGUID
WHERE r.reportID = @reportID
V_ActiveDirは、アクティブなディレクトリデータのビューです。このクエリは、基本的に、レポートを電子メールで送信する電子メールアドレスのリストを取得します。私のレポーティングテーブルには現在、3つのレコードしかありません。私はレポーティングテーブルにフィールドを追加しようとしていましたが、これは永遠に取っていました。このクエリがSQLプロセスでハングしていたことがわかりました。その日の早いうちに、このスクリプトは次のエラーを生成しました:
Timeout expired. The timeout period elapsed prior to completion
of the operation or the server is not responding.
...私は吊り下ろしプロセスを説明しています。私たちはそれを強制終了しようとしましたが、現在はロールバック状態にあり、SQL Serverを再起動する必要があると思います(選択クエリがロールバックしようとするのは気になりません)。これが再び発生するのを防ぐために、SQL Serverまたは.NETのいずれかの方法はありますか?または、SQLでこのプロセスを削除する方法は...スレッドプールに何かがぶら下がっている可能性がありますか?私はまだレポーティングテーブルから選択することができますので、テーブルロックを解除しないでください。このテーブルを変更しようとすると、ホイールが回転します。
私はIISにアクセスしていないため、経験は豊富ですが、提案があればそれを渡すことができます。
編集:私のcatchステートメントでSqlConnectionが開いているかどうかをチェックしていないので、これが原因である可能性があります。