임시 테이블 (#temp_table)을 먼저 확인하고, 존재하는 경우 삭제하고, 테이블을 사용하고, 완료되면 마지막으로 삭제하는 저장 프로 시저가 있습니다. 이 SP는 사용자가 무언가를 트리거 할 때 무작위로 호출되며 때로는 SP가 동시에 실행되거나 일부 중복 될 수 있습니다.MS SQL Server 2005에서는 같은 SP를 여러 번 실행하여 임시 테이블에 액세스 할 때 어떤 현상이 발생합니까?
내가 말하길 Exec1과 Exec2 둘 다 #temp 테이블을 만들고, 변경하고, 삭제하는 동일한 SP를 가지고 있으며, 그들은 서로 밀리 초 내에 실행 중이다.
어떻게됩니까? Exec1은 #temp_table을 잠그고 Exec1은 Exec1이 완료되는 동안 기다릴 것입니까? 그것은 내 경우에 분명히 바람직 할 것이다. Exec1 & 2가 sametime에서 테이블을 사용하기를 원하지 않으며 Exec1이 이미 테이블을 사용하고 있기 때문에 Exec2가 실패하지 않도록합니다.
[편집] 임시 테이블을 테이블 변수로 변환해야합니까?
그렇다면 내 SP에서 'IF OBJECT_ID ('tempdb .. # temp_table ')가 NULL이 아님 \t DROP TABLE # temp_table' 이것은 아무 것도하지 않습니까? 아니면 잠재적으로 다른 사형 집행에 악영향을 미칠 수 있습니까? – jreed121
임시 테이블의 범위가 세션으로 제한되므로 매회 (예 : 웹 앱에서) 새 세션에서 호출하는 것은 필요하지 않습니다. 자세한 내용은 내 대답을 참조하십시오. –
Dommer가 말했듯이, 당신이 그것을 만들려고 시도하기 전에 OBJECT의 Existence를 확인하는 것이 항상 좋은 방법입니다. 귀하의 proc에서 약간의 코드를 유지하십시오. –