2009-03-27 8 views

答えて

15

ローカル一時テーブルは、SQL Serverへの接続を閉じると破棄されます。通常の状況下で手動でパージする必要はありません。あなたが永続的な接続、または接続プールを維持する場合は、使用後すぐに一時テーブルをドロップするのが習慣に取得することができます。

グローバルテンポラリテーブルは、特定のデータベース内のすべてのユーザに表示されるため、それらを参照する最後の接続とともに破棄されます。

+0

私はOKになるだろうので、サービスを報告すると、永続的な接続ではないでしょうと仮定しますか? – Jeff

+7

私はこれがグローバルな一時テーブルでは間違っていると考えています。私はあなたが右....当てはまる言っ通常の一時テーブル(#MyTempTable)のためのに対し、パージする必要があります(MyTempTableは##)グローバルな一時テーブルを信じますか? –

+0

@FrankV:そうです。私は私の答えを明確にしました。 – vezult

20

接続が終了したときに一時テーブルが削除されるという事実にもかかわらず、確実に特定のクリーンアップが行われるように、明示的にそのテーブルを削除することが推奨されます。

たとえば、ご使用のプラットフォームで接続プーリングが使用されている場合、つまり接続が破棄されない場合は、一時テーブルが存在するかどうかを確認します。

一時テーブルが存在するかどうかを確認するには、次のステートメント/チェックを使用できます。

パージするテーブルのリストを照会するには、あなたの質問、の第二部への答えで
if object_id('tempdb..##temptbl') is not null 
begin 
    drop table ##temptbl 
end 
4

、このクエリ試してみてください。

SELECT * FROM tempdb..sysobjects 

現在のすべてのグローバル・テンポラリ・テーブルを一覧表示されます

+0

感謝を変更しない限り、これは本当に便利です、それはMSのドキュメントで述べているものではありません。 – Contango

関連する問題