• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLで同じDBに対し2つのコネクションをもてる?)

SQLで同じDBに対し2つのコネクションを持つ方法と問題の有無について

このQ&Aのポイント
  • SQLServer2005ExpressEditionとVB.NETで、ひとつのDBに対して、コネクションを2つ持つことは可能ですか?または、問題などおこりませんか?
  • 接続を生成する際に接続文字列を指定し、それぞれのコネクションを開くことができます。特に問題はなく、両方の接続が正常に行われる場合でも問題はありません。
  • ただし、同じトランザクション内で複数のコネクションを使う場合は、注意が必要です。データの整合性や排他制御の問題が生じる可能性があります。例えば、一方のコネクションでデータを更新した後、もう一方のコネクションから同じデータを取得すると、更新前のデータが表示されることがあります。このような場合は、トランザクションを適切に管理する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • marutone
  • ベストアンサー率40% (70/174)
回答No.2

実際に不可能ではないですが、 片方のコネクションがトランザクションを開始してしまい、 あるテーブルの行を更新してしまうと、 もう片方のコネクションはコミット待ち状態になります。 本来、コネクションは複数持つべきではありません。 SQLServerの同時接続数にも触れますし、 1つのコネクションを使いまわすのが一般的です。 コネクションは引数等も利用して1つにするように心掛けましょう。

JJKKJK
質問者

お礼

ありがとうございます。 コネクションを複数持つべきではないのは承知しているのですが、持たざるを得ない状況が発生してしました。 ご回答内容、参考になります。

その他の回答 (1)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

cSqlConnectionとcSqlConnection1は別セッションになるでしょう。 という事は、ダーティリードを許さない限り一方の更新は他方のセッションでは見られない。 また、場合によっては一方の更新だけが確定して、不整合を起こす可能性もあります。

JJKKJK
質問者

お礼

ありがとうございます。 片方での更新が、もう片方では見れないのですね。 勉強になりました。