ローカル一時テーブル(#で始まる)はセッションに制限されています。同じユーザー/接続文字列からであっても、他のセッションはそれらを見ることができません。有効期間のルールは、ローカル一時テーブルがストアドプロシージャで作成されたかどうかによって異なります。
- ストアドプロシージャで作成されたローカル一時テーブルは、プロシージャが終了すると削除されます。他のストアドプロシージャ、または呼び出しプロセスはそれらを見ることができません。
- セッションが終了すると、他のローカル一時テーブルは削除されます。
グローバル一時テーブル(##で始まる)はセッション間で共有されます。次の場合に削除されます:
- それらを作成したセッションは終了します
- そして他のセッションがそれらを参照していません
このコマンドは、どの一時テーブルが存在するかを確認するのに便利です。
select TABLE_NAME from tempdb.information_schema.tables
また、一時テーブルが存在するかどうかわからない場合は、これを削除すると便利です。
if object_id('tempdb..#SoTest') is not null drop table #SoTest
詳細については、このMSDNの記事を参照してください。