理由

2016-11-21 14 views
1

私は範囲が#MyTempTableをPF理由

iは原則として

select * 
into #MyTempTable 
from TABLE 

のような技術に選択して作成された一時テーブルを使用する奇妙な状況に直面しましたプロセスIDに制限されています。

が、私は再び

select * 
into #MyTempTable 
from TABLE 

を実行したときに、私は明示的に

drop table #MyTempTable 

を使用する場合でも、私は、一時テーブルが既に存在していることをエラーが発生しています。

これがなぜ発生するのですか?私は前にこの問題に直面したことはありません。私はこの技術を何年も使っています。

答えて

4

あなたは間違いなく同じウィンドウでコードを実行していますか?テーブルを別のウィンドウにドロップすると、テーブルが適切にドロップされません。

テーブルを明示的に作成する前に存在するかどうかを確認するコードを実行することをお勧めします(SELECT INTOではなく)。このようなもの;

IF OBJECT_ID('tempdb..#TempTable') IS NOT NULL DROP TABLE #TempTable 
CREATE TABLE #TempTable (RowNumber int identity(1,1), OtherField nvarchar(max)) 
+0

はい、これは非常に優れています。実際に私はあなたのアプローチを試み、私の問題は消えた。 'select into'テクニックは時間を節約するだけです。 – LaBracca

+0

ええ、それは少しの痛みかもしれませんが(それはあなたがそれについて尋ねるために積み重ねるようになった)。上のコードの習慣を得ることは、実際には長期的にもっと時間を節約することができます。 –