2013-01-22 3 views
1

RetainSameConnection이 True로 설정된 ODBC 연결이 있습니다.RetainSameConnection = True로 SSIS 연결을 닫는 방법

내 쿼리 브라우저에서 직접 SELECT COUNT(*) FROM MyTable과 같은 간단한 쿼리가 중단되므로 패키지가 완료된 후에도 열려 있다고 생각합니다.

소리가 들립니까? 내 이론을 어떻게 입증 할 수 있습니까? 이 연결을 완료 한 후에 SSIS에서이 연결을 강제 종료하는 방법이 있습니까?

+0

패키지를 실행 한 후 열린 연결을 보려고했는데 열린 연결을 보였다. 이것을 해결하십시오. – Thunder

답변

0

저는 성공적으로 즉시 반환 된 SELECT TOP 1 * FROM MyTable을 수행함으로써 제 이론을 입증하지 않았습니다.

이상하게도 문제는 COUNT(*)이 실제로 매우 느리다는 것입니다. 레코드가없는 일부 절을 추가하면 즉각적으로 카운트가 반환됩니다. 이 절은 기본 키가 사용되도록 쿼리 실행 계획을 변경했습니다. 어쨌든 키를 사용하지 않는 이유를 모르겠다. ...

-- Slooooow - 500K records 
SELECT COUNT(*) FROM MyTable 

-- Instant - 500K records 
SELECT COUNT(*) FROM MyTable WHERE ColX > 0 AND ColY > 0 
+0

첫 번째는 아마도 테이블 스캔 결과 일 것입니다. 즉, SQL Server는 응답을 얻기 위해 해당 테이블의 디스크에있는 모든 페이지를 읽어야합니다. 두 번째는 아마도 SQL Server가 일반적으로 훨씬 좁은 인덱스를 이용하여 입출력 요청 등을 줄이는 것입니다. – billinkc

관련 문제