2010-07-18 5 views
3

(2008 테스트되지 않음), 당신은 #function_name 같은 임시 함수를 만들 수는 없지만, 당신은 functoin가 FUNCTION_NAME 직접 tempdb에을 에서라는 만들 수 있습니다. 함수가 이런 식으로 임시 함수를 만들었습니까? 테이블 사이의 차이를 직접 tempdb의에서 만든 예 : #table_name과 같은 이름의 테이블을 호출 무엇입니까?#test라는 테이블을 만들고 tempdb에 test라는 테이블을 만듭니다. 그 차이점은 무엇입니까? SQL Server 2005의

+0

은하지 마십시오. 그냥 하지마. 나는 그것이 나쁜 말을 BOL의 장과 절을 인용, 또는 (이 코멘트는 대답이 아닌 이유이다) 특별한 이유 또는 사례 연구를 제공,하지만 내 상당한 SQL 서버 환경의 모든이 묻는 것을 알려줍니다 수 없습니다 문제 때문에. –

답변

4

임시 테이블 (#test는) 실제로 tempdb 데이터베이스에 #test 호출되지 않습니다. 이는 시스템의 모든 사용자가 #test라는 테이블을 생성 할 수 있기 때문입니다. 임시 개체를 만드는 경우 tempdb 데이터베이스의 실제 개체 (sys.all_objects 카탈로그 뷰를보고 찾음). 제 경우에는 "#test _______________________________________________________________________________________________________________ 000000000003"으로 작성되었습니다. 당신은 어디에서이 시험이라고 tempdb 데이터베이스에서 실제 테이블을 생성하고, 한 번에 하나 개의 사용은 객체를 생성 할 수 있으며, 여러 사용자가 물리적 테이블라는 테스트에 데이터를 넣을 경우 그들은 서로의 데이터에 액세스 할 수있는 경우 . 임시 테이블이있는 경우 사용자는 자신의 데이터와 자체 테이블에만 액세스 할 수 있습니다.

3

한 가지 분명한 차이점은 연결이 종료 될 때 그것은 자동적으로 삭제할 수 없습니다 것입니다하지만 그 이상 내가 명시 적으로 청소 귀찮게하고 싶지 않아 내 개발 머신에서 빨리 뭔가를 테스트하는 것이 매우 유용 찾을 수 있습니다. tempdb는 서버가 재시작 된 후 분명히 다시 생성되므로 어떤 종류의 지속성을 원한다면 사용해서는 안됩니다.

관련 문제