복붙노트

[SQL] 임시 테이블의 범위?

SQL

임시 테이블의 범위?

내 저장 프로 시저에서 임시 테이블 #tempTable을 활용하고 - 내 ASP.net 보고서 (보고서 서비스)를 실행하는 데 사용할 수 있도록하는 것이

내가 좋아하는 일을하고 있어요

예를 들면. 암호

SELECT * INTO #tempTable FROM Contacts WHERE ContactID < 10

그 때 나는 같은 것을 사용

SELECT o.* FROM #tempTable t INNER JOIN Orders o ON t.ContactID =o.ContactID

저장 프로 시저에 대한 결과 일명 내 보고서에 값을 반환

내 #tempTable 제거하지 않습니다

즉 I하지 않는다

DROP TABLE #tempTable

나는 임시 테이블의 범위는 저장 프로 시저입니다 읽었습니다 - 그래서 필요 이상으로하고있다 - 내가 해달라고하면 내가 미래에 얻을 것이다 어떤 문제 위

해결법

  1. ==============================

    1.첫째, 프로 시저 내에서 만든 로컬 임시 테이블은 프로 시저가 완료되면 삭제됩니다. 표 작성에 BOL에서 :

    첫째, 프로 시저 내에서 만든 로컬 임시 테이블은 프로 시저가 완료되면 삭제됩니다. 표 작성에 BOL에서 :

    당신의 데이터 접근 코드가 제대로 저장 프로 시저를 호출, 연결을 열고 다음 연결을 종료하는 경우, 임시 테이블이 절차에서 만든 효과적으로 파괴된다.

    나는 다른 점을 가지고에 "효과"라고합니다. 내가 임시 테이블을 생성하기 직전에 수표를 추가하고있는 경우 (예를 들어, 경우 OBJECT_ID ( 'tempdb에 .. 푸'null이 아닌)) 드롭 것이지만 나는 프로 시저의 끝에서 임시 테이블을 삭제 권하고 싶지 않다. 마지막에 임시 테이블을 삭제에 대한 인수는 드롭 문을 호출하여, 당신은 다음의 표를 파괴하고 마지막에 당신의 절차가 기다리는 동안 자원을 소비하는 SQL 서버를 강제하는 것입니다. 대신, 당신은 즉시, 범위의 프로 시저의 끝을 가자 당신은 SQL 서버가 자신의 선택의 시간에 테이블을 파괴 할 수 있습니다.

  2. ==============================

    2.#Temp 테이블은 아무도 당신의 임시 테이블을 볼 수 있으며, 다른 사람이 동일한 이름으로 자신의 #Temp 테이블을 만들 수 있습니다 의미, 세션 및 배치의 수명에 범위를 제한됩니다. 세션 또는 일괄 종료되면, SQL Server는 임시 테이블을 정리합니다.

    #Temp 테이블은 아무도 당신의 임시 테이블을 볼 수 있으며, 다른 사람이 동일한 이름으로 자신의 #Temp 테이블을 만들 수 있습니다 의미, 세션 및 배치의 수명에 범위를 제한됩니다. 세션 또는 일괄 종료되면, SQL Server는 임시 테이블을 정리합니다.

    다른 주에서 일반 테이블처럼 ## 임시 테이블 동작합니다. 모두가 그것을 볼 수 있으며, 같은 이름의 1 이상 ## 임시 테이블이 될 수 없습니다. SQL Server를 할 때 서버가 다시 시작이 ## 임시 테이블을 정리합니다.

  3. ==============================

    3.그것은 명시 적으로 사용자가 만드는 모든 임시 테이블을 드롭 연습 코딩 좋은 간주됩니다. 당신이 임시 테이블은 당신이 명시 적으로 떨어질 때까지 유지 또는까지되는 SQL Server 관리 Studio / 쿼리 분석기를 통해 스크립트를 실행하는 경우 세션을 닫습니다.

    그것은 명시 적으로 사용자가 만드는 모든 임시 테이블을 드롭 연습 코딩 좋은 간주됩니다. 당신이 임시 테이블은 당신이 명시 적으로 떨어질 때까지 유지 또는까지되는 SQL Server 관리 Studio / 쿼리 분석기를 통해 스크립트를 실행하는 경우 세션을 닫습니다.

  4. ==============================

    4.일반적으로, 당신은 아마 임시 테이블을 삭제하지 않음으로써 문제가 발생하지 않을 것입니다. 지역 임시 테이블은 경우에 세션 범위, 또는 SP 범위를 가지고있다. 세션이 폐쇄 또는 SP가 완료되면 자동으로 삭제된다.

    일반적으로, 당신은 아마 임시 테이블을 삭제하지 않음으로써 문제가 발생하지 않을 것입니다. 지역 임시 테이블은 경우에 세션 범위, 또는 SP 범위를 가지고있다. 세션이 폐쇄 또는 SP가 완료되면 자동으로 삭제된다.

    그러나, 당신은 정기적으로 연습을 수행하여 문제의 위험을 증가 할. 당신은 SP를 사용하지만 ASP .NET에서 SELECT 문을 제출 열어 SQL Server 연결을 두지 않는 경우 예를 들어, 임시 테이블이 있어야 할 것입니다. 연결 및 다른 임시 테이블의 계속 사용은 시간이 지남에 tempdb의 성장에 발생합니다.

    또한이 경우 임시 테이블의 사용에 관한 다른 의견을 지원합니다. 당신이 임시 테이블이없는 솔루션을 작성하는 경우, 당신은 아마 빠른 보고서가 너무 드롭 임시 테이블 명령을 피할 수 있습니다.

  5. from https://stackoverflow.com/questions/3331807/temporary-table-scope by cc-by-sa and MIT license