이유

2016-11-21 3 views
1

나는 범위가 #MyTempTable을 PF이유

내가 원칙적으로

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

그래, 조금이라도 고통 스러울 수있다. (물어보기 위해 오버플로가있다.) 위 코드의 습관을 얻는 것은 실제로 장기간에 걸쳐 더 많은 시간을 절약 할 수 있습니다. –