2017-05-22 3 views
0

サービス・ブローカ・キューによってアクティブ化されたストアド・プロシージャで一時テーブルを使用する場合、同時に複数のメッセージがストアド・プロシージャを複数回アクティブ化する場合、キューの「読者」は同じセッションを使用し、一時テーブル?サービスブローカは、ストアドプロシージャのexec/temporary tableの衝突のリスクに対して同じセッションを使用しますか?

REF:this post that sounds like each activation will have its own session.. but am I understanding it wrong ? REF 2:That msdn doc that left me puzzled

答えて

1

各リーダースレッドは、MAX_QUEUE_READERSまで、独自のセッションを持っています。これは真実でなければならず、そうでなければ並行して実行できませんでした。セッション(スレッド)内で、ストアドプロシージャは繰り返し呼び出されることがあります。そのため、2つの同時ののストアドプロシージャのインスタンスは、#tempテーブルへのアクセス時に衝突することはできませんが、#tempテーブルは、同じセッションの前の実行から既に移入されている可能性があります。

+0

私はテーブル変数を使用するために、テンポラリテーブルの代わりに変更/挿入などを使用しないように工夫したメソッドを使用していました^^ –

+0

しかし、セッションにアクセスすることはできないので、#tempテーブル*をストアドプロシージャの外側に作成することはできないため、#tempテーブルはproc内にのみ作成できます。そのような#tempテーブルは、ストアドプロシージャが終了すると自動的に削除されるはずです。 –

+0

はい、私はそれらを作成し、proc内にドロップします。 –

関連する問題