SSIS 파생열 변환의 심각한 버그?

sqlleader.co.kr 에 올린 글임...

----------------------

한글판 BIDS 입니다.
 
OLE DB 원본에서 아무 컬럼이나 읽고, 파생열 변환하고 연결합니다.
파생열 변환에서 새 컬럼 추가하고 스크립트를 TEST_COL + "" 이렇게 해서 SAVE하고
IDE닫은 다음에 다시 열어보세요. 데이터 변환 작업 내용이 다 날아가 있을겁니다.
 
이걸 알아채기 더더욱 힘든건, 파일 크기는 왕창 줄어들어 있는데 IDE상에 그림은 제대로
떠있습니다. IDE를 닫았다가 다시 열어보거나 파일 크기를 새로 확인해보기 전엔 알 수
없습니다. 아무래도 특수문자 "" 때문인 것 같네요. 3주일치 작업한거 다 날아가서 눈물납니다. ㅠ_ㅠ
 
 
 
@제꺼에서만 그러면 대략 낭패-_-


----------------------아래는 답변---------------------

제 목   Re) BIDS 의 버그
· 작성자    한대성
· 글정보   Hit : 2, Date : 2007/02/26 18:20

안녕하세요..^^(흑..안녕치 못하신 것 같습니다..)
 
말씀대로 패키지를 구성해서 해보니 저도 동일한 현상이 발생되네요..
 

식에 문자가 들어가니 저장할 때 말씀하신 바와 같이 패키지 내용이 날라가네요..
 
강제로 패키지의 XML 문에다가 해당 문자를 추가해서 열어봤더니 다음과 같은 에러 메시지
가 출력되네요..
 
 
 
결국은, 디자인 타임에서도 저런 형태로 에러가 발생되었을 낀데 왜 출력을 안하는지 원..쩝..
 
패키지의 레이아웃은 패키지의 XML 코드에서 <diagram>  ...  </diagram>  부분에 정의
되어 있기 때문에 패키지의 외관은 유지가 되는 것 같습니다.
 
실제로 날라가는 부분은 <components>  .. </components> 부분이네요..
 
위와 같은 문자열을 추가시킬려면 파생열 변환 대신에 스크립트 구성요소-변환 을 이용해서
처리해야 할 것 같네요..^^
 
예) Row.Title1 = Row.title + Chr(8)
 
 
 
근데 왜 저런 문자를 덧붙이시나요..?? ^^

Posted by maceo

02 26, 2007 19:00 02 26, 2007 19:00
, ,
Response
No Trackback , No Comment
RSS :
http://merritt.co.kr/tt/rss/response/91

다음 SQL을 SSIS 데이터 흐름 작업으로 변환시키는 시나리오를 생각해보자.

(1) insert into STAGING_TABLE
select (필드들..)
from SOURCE_TABLE
where (조건들...)

(10000건 인서트)


(2) update st
set colA = r1.colA
from STAGING_TABLE st
     inner join REF_DATA1 r1 on st.col1 = r1.col1

(1000건 update)

(3) update st
set colA = r2.colB
from STAGING_TABLE st
     inner join REF_DATA2 r2 on st.col2 = r2.col2

(100건 update)

(1)번은 심플하다. OLE DB 원본으로 주욱 읽어들인다.
(2)도 쉽다. 조회 변환을 사용해서 REF_DATA1 을 읽고 오류 무시를 설정, 조인키는 col1, r1.colA를 조회 새로운 열 colA로 추가한다.
(3)도 쉬워보인다. 조회 변환, REF_DATA2 를 읽고 오류 무시, 조인키는 col2, r2.colB를 읽어서 (2)에서 추가한 colA에 대해서 바꾸기 colA 로 설정한다.

자 돌려보자!

이런-_-;;;;; (2) 에서 조회에 성공한 1000개의 REF_DATA1 의 값 colA가 몽땅 NULL로 바뀐 거시다!!!! ㅠ_ㅠ

이게 왜 그럴까?

그렇다.. (3) 에서 조회 성공한 100건에 대해서 colA의 값을 바꾸고 나머지 10000건 - 100건 의 데이터는 몽땅 NULL로 바꿔버리는 거시다... 이거때문에 한참 헤맸다. DB에 너무도 익숙해진 나머지 위의 조회 변환도 당연히 DB의 update 처럼 동작하는 것으로 착각한 것이다. 이걸 제대로 돌게 하려면 (3)에서 읽어들이는 값을 새로운 열 추가 colA_1 로 해놓고 파생열 변환에서 바꾸기 colA 열, !ISNULL(colA_1) ? colA_1 : ( !ISNULL(colA) ? colA : "N" ) 이런식으로 바꿔준다.

앞으로 이런 삽질을 얼마나 더 해야할까. 흑.


Posted by maceo

02 23, 2007 10:01 02 23, 2007 10:01
, ,
Response
No Trackback , No Comment
RSS :
http://merritt.co.kr/tt/rss/response/90


블로그 이미지

가늘어도 긴놈이 장땡

- maceo

Archives

Authors

  1. maceo

Calendar

«   3 2010   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Site Stats

Total hits:
170306
Today:
4
Yesterday:
46