2

重複の可能性:
SQL SERVER のローカルおよびグローバル一時テーブル

SQL での #tables の動作について、誰かがより良い説明をしてくれるかどうか知りたいです。

ストアド プロシージャの 1 つで、現在アクティブなストアド プロシージャによってデータが格納される一時テーブル (#table) を作成します。引数のために、これをSproc1と呼びましょう。

Sproc1 は sproc2 によって呼び出されます。呼び出しの後、sproc2 は #table からデータを収集し、#table は不要になるため削除します。

理論上はすべてうまくいきますが、2 人または 20 人がまったく同時に sproc2 を呼び出し/実行した場合はどうなるでしょうか?

ですから、SQL が sproc2 を使用する呼び出し元ごとに #table の新しいインスタンス (接続によってリンクされる) を作成するのか、それとも競合が発生するのかを知りたいです。

4

3 に答える 3

3

この質問には、あなたの質問に答える良い回答がいくつかあります。

SQL Server のローカルおよびグローバル一時テーブル

于 2012-07-20T09:18:25.367 に答える
2

あなたは元気でなければなりません。#table一時テーブルは、同じSQLセッション内の呼び出しにのみ表示されます。

良い説明はここにあります。

于 2012-07-20T09:23:37.803 に答える
1

(例のように)1つのハッシュタグを使用してテーブルを作成すると、そのテーブルを作成した接続のみがそのテーブルにアクセスでき、接続が閉じられると自動的に削除されます。

すべての接続がそれを認識できるようにする必要がある場合は、グローバル一時テーブル(## table)を使用できますが、接続が閉じられるとそれらも削除されるため、プロシージャに存在すると想定しないでください。

于 2012-07-20T09:23:23.497 に答える