(SMSS のデザイン ツールを使用して) SQL Server データベースのテーブルに単純なスキーマ変更を加えようとしました。変更を保存しようとするたびに、タイムアウトし続けました。これは、テーブルを「ロック」している既存の接続が原因であるかどうか疑問に思いました。
実験として接続を切断することにしました。master..sysprocesses にクエリを実行して、そのデータベースの現在の spid を取得し、スキーマの変更を保存できるようになるまで、それらを 1 つずつ強制終了しました。(あまり科学的ではありませんが、私は SQL Server の専門家ではありません)。案の定、すべての spids (SMSS を使用していたものを除く) を削除すると、スキーマの変更を保存することができました。
ADO.NET SqlConnections と spids の関係についてお聞きしたいと思います。たとえば、クライアント アプリが SqlConnection オブジェクトで Open() を呼び出した場合、master..sysprocesses に別の spid が表示されますか? その SqlConnection で Close() を呼び出すとどうなりますか? スパイは消えるべきですか?
接続プーリングの概念があることを理解しているので、それほど単純ではないと確信していますが、この関係がどのように機能するかについて誰かが光を当てることができますか?
ありがとうございました
デビッド