2010-01-25 3 views
1

이것이 내 첫 번째 질문이므로 나와 함께 감내해야합니다. 지불 할 수 있다면 어딘가에 대답하려고 시도 할 것입니다. 그러나 내 기술은 아직까지 확실하지 않습니다.SP가 영원히 SSIS에서 실행됩니다.

나는 현재 약 2008 년 홀수 행의 결과로 실행되는 SQL 2008의 저장 프로 시저를 가지고 있으며 그 안에 유니온이 있고 사용자 정의 함수가 여러 번 사용되었습니다. 터무니없는 일. Management Studio의 쿼리 창을 통해 7 초 내에 쿼리가 완료됩니다.

BIDS 내에서 SSIS를 쓰는 것은 데이터 흐름의 일부로 OLEDB 소스와 동일한 SP를 사용합니다. 결과 집합은 Excel로 출력됩니다.

완료되기 전에 동일한 쿼리가 Pre-execute phas 내에서 40 홀수 분 동안 중단됩니다.

나는 몇 가지 이상한 버크가 있었는지 동일한 데이터 흐름을 다시 만들려고했는데, 문제 내에서 UDF를 교체하려고 시도했지만 아무 소용이 없었는지 확인했습니다.

누구든지 문제가 무엇인지 또는 어떤 조사를 더 진행하기 위해 무엇을 할 수 있는지 아이디어가 없습니다.

종류와 관련,

매트 H

+0

성공적으로 패키지 실행을합니까 미래에 누군가를하는 데 도움이? – Sam

+0

당신이 할 수있는 경우에 sp를 게시하십시오, 어쩌면 우리는 무언가를 볼 것입니다 – HLGEM

답변

1

모두에게 도움을주었습니다. 업데이트 .......

어제 발견 된 해결책이 어제 쉽게 찾을 수 있다고 생각하게 만드는 어제 비슷한 문제가 발생했습니다.

문제는 다른 곳에서 언급했는데, 고객의 제품이 기본적으로 나쁜 데이터라는 것입니다.

패키지의 데이터 소스에서 실행되는 저장 프로 시저의 인덱스는이어야합니다. 기본 키가있는 테이블과 대화하는 쿼리가 이러한 데이터 원본에서 발생하지만 조인은 다른 필드를 참조해야하는 불량한 고객 데이터로 인해 테이블 ​​데이터에 대해 일부 청결 작업을 실행하고 고유 데이터를 생성했습니다 그들로부터 테이블.

이제 패키지의 데이터 소스에서 동일한 쿼리를 실행하면 (이제 기본 키를 참조하는 조인과 함께) 몇 시간이 아닌 몇 초 만에 실행됩니다.

내가 추측하는 것이 전체 테이블에 대한 쿼리로 인해 다른 사람들과 비슷한 이슈를 읽었을 때의 모든 것들과 사전 실행 단계에서의 것들이 아마도 사실에 가깝습니다 ..... ..... 나를위한 해결책은 기초가되는 데이터를보고 삐걱 거리는 것입니다.

희망

매트 H

0

나는 문제가 무엇인지 모른다. 결과를 임시 테이블로 출력 한 다음 그 결과를 스프레드 시트로 옮길 수 있습니다.

+0

안녕 샘, 응답 주셔서 감사합니다. 예 패키지가 성공적으로 실행됩니다. 솔루션에 대한 내 첫 번째 시도 중 하나는 SP가 생성 한 데이터를 Excel 대신 대상 테이블로 내보내 데이터 흐름을 변경하여 문제가 발생하지 않는 것으로 입증되지 않았 음을 입증하는 것이 었습니다. 불행히도 테이블에 출력되는 저장 프로 시저의 실행 시간이 길어서 같은 문제가 발생했습니다. –

+0

다음에는 소스에 집중하겠습니다. 다른 데이터 소스 유형을 시도해보십시오. – Sam

+0

또한이 절차를 수행하여 준비 테이블에서 EXCEL로 단순히 이동하려는 SSIS보다 먼저 실행되는 작업 단계에 넣을 수도 있습니다. – Sam

2

sp가 아닌 sp로 쿼리를 실행 해 보셨습니까? 느린가?

+0

이렇게하면 긴 시간 문제를 즉시 해결할 수 있습니다. 문제가 해결되었습니다. 그러나 나는 그것이 항상 여러 장소에서 사용되는 저장 프로 시저 및 다음이 패키지의 원시 쿼리를 유지 관리하는 것을 의미하므로이 접근법을 피하려고합니다. ....... 나는 SP 문과 관련이 있는지 궁금해합니다. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO 이것은 쿼리를 실행하거나 저장 프로 시저로 실행하는 유일한 차이점입니다. –

+0

불행히도 저는이 답변을 투표 할 수 없습니다. 평판 포인트가 없기 때문에 투표를 할 수 없습니다 - 도움을 주신 모든 분들께 감사드립니다. –

+1

그래, 이거 해봐. 데이터 흐름 작업 전에 proc를 실행하는 exec SQL 작업을 실행하고 결과를 준비 테이블에 삽입합니다. 그런 다음 데이터 흐름의 준비 테이블에 대한 쿼리를 수행합니다. – HLGEM

관련 문제