アプリ版:「スタンプのみでお礼する」機能のリリースについて

SQLServer2005ExpressEditionとVB.NETで、ひとつのDBに対して、コネクションを2つ持つことは可能ですか?または、問題などおこりませんか?

以下のような感じでやってみたところ、両方ともに接続はできましたが、何か問題をはらんでいないかお気づきの方いらっしゃいましたらご教示いただけると助かります。

' 接続文字列を生成する
Dim stConnectionString As String = "接続情報"

' SqlConnection の新しいインスタンスを生成する (接続文字列を指定)
Dim cSqlConnection As New System.Data.SqlClient.SqlConnection(stConnectionString)
  Dim cSqlConnection1 As New System.Data.SqlClient.SqlConnection(stConnectionString)

' データベース接続を開く
cSqlConnection.Open()
cSqlConnection1.Open()

' 実処理
  ・
  ・
  ・

' データベース接続を閉じる
cSqlConnection.Close()
cSqlConnection.Dispose()
cSqlConnection1.Close()
cSqlConnection1.Dispose()

A 回答 (2件)

実際に不可能ではないですが、


片方のコネクションがトランザクションを開始してしまい、
あるテーブルの行を更新してしまうと、
もう片方のコネクションはコミット待ち状態になります。

本来、コネクションは複数持つべきではありません。
SQLServerの同時接続数にも触れますし、
1つのコネクションを使いまわすのが一般的です。

コネクションは引数等も利用して1つにするように心掛けましょう。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/02/13 20:53

cSqlConnectionとcSqlConnection1は別セッションになるでしょう。


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

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

お礼日時:2011/02/13 20:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す