2014-06-13 3 views
2

SSIS에서 스크립팅을하는 것이 매우 쉽고 기존 테이블의 값을 업데이트하기 만하면됩니다.스크립트 구성 요소가 DB의 데이터를 업데이트하는 방법 이해하기

아마도 스크립트 구성 요소가이 용도로 사용되는 예가 거의 없기 때문에 잘못된 접근 방식을 취하고 있습니다. 정교한 비즈니스 논리를 사용하여 일정에 따라 SQL Server 내에서 데이터를 업데이트하는 더 좋은 방법이 있다면 표준 접근 방식을 사용하는 것이 좋습니다.

그러나 스크립트 구성 요소에 대해서는 열이 추가되는 곳을 예로 들었지만 단순히 값만 업데이트되는 곳은 어디에도 없습니다.

지금까지 나는 가능한 간단한 작업을 수행하기 위해이 테스트 스크립트를 만들었습니다

public override void Input0_ProcessInputRow(Input0Buffer Row) 
{ 
    Row.AutoModel = "123"; 
} 

나는 SSIS 패키지를 실행합니다. 거기에 중단 점을 배치했기 때문에이 방법이 실행된다는 것을 알고 있습니다. SSIS 패키지가 성공적으로 완료된 후 모든 AutoModel 필드가 DB 내에서 "123"이 될 것으로 예상했지만 아무 것도 변경되지 않았습니다. 이 업데이트를 호출하기 위해 내가해야 할 일이 있습니까?

+0

데이터를 업데이트 중이거나 생성 중입니까? 후자의 경우 대상 구성 요소를 사용하십시오. –

+0

방금 ​​업데이트하고 싶습니다. 열을 만들어야한다면 시도해 볼 것이지만 업데이트가 작동하지 않는 이유를 알고 싶습니다. – Dave

+0

SQL 실행 구성 요소가 아닌 스크립트 구성 요소를 사용하는 이유가 있습니까? –

답변

1

SSIS에는 두 가지 스크립트 항목이 있습니다. 다소 혼란 스러울 수 있습니다. 제어 작업 디자인 탭의 도구 상자에 스크립트 작업이 나타나고 데이터 흐름 탭의 도구 상자에 스크립트 구성 요소가 나타납니다.

이 경우 데이터 흐름 변환 인 스크립트 구성 요소를 사용하고 있습니다.

데이터 흐름에는 일반적으로 데이터 소스, 하나 이상의 변환 및 데이터 대상이 있습니다. 데이터베이스의 레코드를 삽입하는 대신 업데이트해야하므로 데이터 흐름 마지막에 저장 프로 시저를 호출하는 OLE DB 명령이 필요합니다.

필요한 업데이트를 수행하기 위해 저장 프로 시저를 작성하고 필요한 매개 변수를 사용합니다. OLE DB Command 개체는 데이터 흐름의 필드를 저장 프로 시저의 매개 변수에 매핑하도록 구성되어야합니다.

"아마도 내가 잘못된 접근 방식을 취하고 있습니다."라고 말하면됩니다. 내 경험에 비추어 볼 때 스크립트 구성 요소는 유용 할 수 있지만 드물게 사용하는 것이 가장 좋습니다. 테이블 구성, 조건부 분할, 파생 된 열 및 집계와 같은 표준 구성 요소로 처리 할 수 ​​있습니다.

그런 식으로 SSIS를 사용하면 큰 이점이 있습니다. 최고의 성능을 제공합니다. 개발하고 유지하는 것이 더 빠릅니다. 패키지를 실행하면 데이터가 흐르는 경로를 볼 수 있습니다. 데이터 뷰어를 부착하여 데이터를 검사 할 수 있습니다.

+0

정확히 내가 필요로하는 것. 내 자신의 SQL 명령을 작성해야하고 OLE DB 명령 대신 대상 도우미를 계속 사용하려고한다는 것을 알지 못했습니다. 감사! – Dave

+0

도움이 된 것을 기쁘게 생각합니다. 정확히는 분명하지 않습니다. 나는 최근에 SSIS를 많이 사용 해왔고 그것이 훌륭한 도구라고 생각합니다. – RichardCL

관련 문제