2010-03-12 5 views
2
DELETE FROM #tItem_ID 
WHERE #tItem_ID.Item_ID NOT IN (SELECT DISTINCT Item_ID 
            FROM Item_Keyword 
            JOIN Keyword ON Item_Keyword.Keyword_ID = Keyword.Record_ID 
           WHERE Keyword LIKE @tmpKW) 

키워드는 % 마카로니 %입니다. 두 임시 테이블 모두 3300 개의 항목이 있습니다. 내부 선택은 1 초 이내에 실행됩니다. 모든 문자열은 nvarchar (249)입니다. 모든 ID는 int입니다.SQL Server 2005 : 임시 테이블에서 삭제가 영구 중단되는 이유는 무엇입니까?

아이디어가 있으십니까? 나는 그것을 끝내지 않고 12 분 이상 그것을 실행했다 (그것은 저장된 proc에있다).

+0

BTW, '영원히''는 _long_, _long _... 시간입니다 .--) 정말입니까? – mjv

+0

전체 데이터베이스를 스크립팅하고 대량 레코드로 모든 레코드를 다시로드 했으므로 문제가 사라졌습니다. 어떤 생각이라도? "교착 상태"를 제거하기 위해 SQL 서버를 여러 번 다시 시작했지만 문제는 남아있었습니다. –

+0

은 영원히 "계속적으로"도 의미 할 수 있습니다. 여기서 모든 실제 시간에는 일어나지 않지만 일어날 때마다 말입니다. ;) –

답변

4

아무것도 잘못 테이블에 잠금을 설정하면 쿼리가 진행되지 않을 수 있습니다. SSMS에서 테이블 중 하나에 뭔가를 한 다른 세션이 있습니까?

또한 어떤 자물쇠가 열려있을 경우 확인하기 위해 시스템의 sproc sp_who2를 사용할 수 있습니다. BlkBy 란을보고 다른 프로세스가 보유한 잠금 장치에 무엇이 매달려 있는지 확인하십시오. 나는이 같은 문제로 실행하면

2

트랜잭션을 열었을 때 커밋 또는 롤백을 수행하지 않으면 SQL Server가 "중단"되는 전형적인 경우입니다. 이 가능성을 고려하지 못했다는 점에서 (실제로 거대한 데이터 세트로 작업하지 않는 한) 실제 삭제에 너무 싸서는 안됩니다. 당신이 ** 내 대답을 무시 deadlocking...

에 읽을 수도 있습니다처럼

+0

암시 된 트랜잭션이 없으면 sp에 begin 트랜잭션이 없습니다. 이상하게도, 내 컴퓨터의 동일한 데이터베이스가 즉시 실행됩니다. –

0

는 소리 - 박사 ZIM의 의견이 보존되도록 내가 그것을 떠날거야,하지만 **

+0

개별 프로세스에 격리 된 임시 테이블의 교착 상태? –

+0

12 분이 경과하기 전에 교착 상태 감지가 시작되어야한다고 생각하니? –

+0

실제로 Dr. Zim은 좋은 점을 가지고 있습니다. 나는 틀 렸습니다. 내가 MS-SQL을 사용하기 때문에 오랜만하지만, 교착 상태 감지 내 옛 직장에서 우리가 ... –

2

내가 SQL Heartbeat을 발사하며 충돌을 일으키는 걸 표시 할 수 있습니다. 또한 위의 상태로 올바르게 닫히지 않은 트랜잭션과 관련된 교착 상태를 보여줍니다.