'ssis'에 해당되는 글 4건
- 2012.08.09 SSIS 데이터 이관 속도
- 2012.02.09 SSIS::플랫 파일 가져오기 에러.
- 2010.06.03 For컨테이너-무한루프
- 2009.07.27 SSIS::Foreach 이용한 장비별 동일 로직 반복 - ADO 열거자 1
SSIS 데이터 이관 속도
- ODBC Tasks : 5 minutes 57 seconds
- ADO NET Tasks : 11 seconds
- OLEDB Task
- fast load, table lock option: 5 seconds.
- table or view option : 2 minutes and 21 seconds
- sql command : 2.85 seconds.
- SQL Server Destination
- oledb destination : 2.5 seconds.
- T-SQL Tasks
- 프로시저 생성해서 작업 : 1.8 seconds! -> 이건 같은 DB 일 때 네요.
'Business Inteligence (SSIS)' 카테고리의 다른 글
SSIS::플랫 파일 가져오기 에러. (0) | 2012.02.09 |
---|---|
SQL2008에서 SQL2000 DTS열기 (0) | 2010.06.07 |
For컨테이너-무한루프 (0) | 2010.06.03 |
스크립트task사용 (0) | 2010.06.03 |
SSIS::플랫 파일 가져오기 에러.
ssis 버그라고 하는데 SQL R2 버전이면서 win7 x64일 경우 발생한다.
아래는 버그에 대한 설명이고 sp2를 설치하면 된다고 한다.
혹은 플랫 파일 연결자의 속성중 TextQualifier 를 아무것도 없이 지운다.
http://support.microsoft.com/kb/2576118
'Business Inteligence (SSIS)' 카테고리의 다른 글
SSIS 데이터 이관 속도 (0) | 2012.08.09 |
---|---|
SQL2008에서 SQL2000 DTS열기 (0) | 2010.06.07 |
For컨테이너-무한루프 (0) | 2010.06.03 |
스크립트task사용 (0) | 2010.06.03 |
For컨테이너-무한루프
Question |
FOR 문을 이용해서 무한적으로 반복해서 실행하고 싶은 작업이 있습니다. 그러면서도 작업과 작업 사이에 대기시간을 5초 정도 주고 싶습니다. 즉, 매번 반복되면서 5초에 한번씩 A 라는 곳에서 select 해서 B 라는 곳으로 Insert 하는 작업이 필요합니다. 대기시간 주는 것은 여기 사이트에 예시도 있어서 가능 할 것 같은데 계속 실행되면서 select 하려면 어떻게 해야 할까요? |
다음과 같이 For루프 컨테이너를 추가합니다.
루프 편집기에서 다른 조건은 설정할 필요 없이 EvalExpression 속성 값에 true를 입력합니다.
이렇게 설정하는 것은 쿼리에서
WHILE (1=1)
BEGIN
…
END
와 비슷한 형태입니다.
이제, For 루프 컨테이너 안에 필요한 작업들을 설정해서 넣고선, 5초 동안 대기하는 것을 구현해야 합니다.
이전에 올린 글에 FOR 루프 컨테이너를 이용해서 일정 시간 동안 대기하는 것을 구현한 것이 있습니다. 하지만 이 방법은 쓰지 마시기 바랍니다. (CPU가 과도하게 높이 올라갑니다.)
http://www.sqlleader.com/mboard.asp?exec=view&strBoardID=SS2005SSIS&intSeq=523
대신, SQL 명령을 이용하는 것이 가장 바람직할 것 같습니다.
작업들을 구성한 후, 가장 마지막 부분에 SQL 실행 작업을 추가한 후,
DB 연결을 설정하고, 다음과 같은 간단한 명령을 사용합니다.
예) 5초 동안 대기를 해야 할 경우
WAITFOR DELAY ’00:00:05’
매 번 루핑 때 마다 마지막 단계에서 5초간 대기하는 무한 루프가 만들어졌습니다.
이 글은 스프링노트에서 작성되었습니다.
'Business Inteligence (SSIS)' 카테고리의 다른 글
SSIS::플랫 파일 가져오기 에러. (0) | 2012.02.09 |
---|---|
SQL2008에서 SQL2000 DTS열기 (0) | 2010.06.07 |
스크립트task사용 (0) | 2010.06.03 |
Debugging and Logging in SSIS (0) | 2010.06.03 |
SSIS::Foreach 이용한 장비별 동일 로직 반복 - ADO 열거자
DBA 작업을 하면서 장비별 동일 정보를 관리용으로 수집하고 싶은 경우가 종종 있게 된다.
연결 정보만 틀리고 동일한 로직을 호출하면 되는데 여러개의 데이터 흐름 작업을 만들고, 여러 연결 관리자를 만들게 되면 관리상의 이슈로 힘들어 지게 된다.
또한, 간혹 발생하게 될 장비의 IP 변경으로 인해 패키지를 다시 빌드해야 하는 단점도 발생하게 된다.
이런 점을 해결하기 위해 DB의 연결 정보를 파일로 처리하여 Foreach 루프 컨테이너의 ADO 연결자를 사용하여 장비별 동일 로직을 실행하는 예제를 만들어 본다.
1. 관련 변수들을 선언한다.
object 변수와 파일에서 connection string 을 읽어올 변수는 필수이다. (obj_conn, file_conn)
2. conn_file01.txt 파일을 만들고 연결 스트링 정보를 입력한다.
연결정보에 관한 정보는 시스템에 맞게 입력
3. 새 플랫 파일 연결관리자를 만들고 2번에서 입력한 파일을 읽을 수 있게 처리한다.
4. 플랫 파일 원본을 선택한 후 파일 연결관리자를 입력해서 connection string이 열로 출력되어 레코드 집합 대상을 만들 수 있게 처리해 준다.
5. 레코드 집한 대상에 VariableName 에 object 변수를 선택하여 파일에서 읽어온 정보가 해당 변수에 담아지도록 처리한다.
6. 파일 출력열이 맞는지 확인 한다.
7. Foreach 루프 컨데이터를 이용해서 불러들인 연결 정보 만큼 동일 로직을 수행하게 작업 처리한다.
8. ADO 연결자를 선택하고 원본 변수에 데이터 흐름 작업에서 connection string 정보를 담은 변수를 입력한다. 이 변수의 row 수 만큼 loop 작업이 실행되게 된다.
9. ForEach 컨테이너에서 변수 매핑 을 클릭하고 출력되는 열을 변수에 담는다.
10.
담은 변수를 연결 관리자를 하나 만든다음에 실행된 DB의 커넥션 변수에 해당 변수를 매핑해 준다.
이로써 DB에 동적으로 연결 정보를 받아 작업이 실행될 수 있다.
11 SQL 실행작업을 하나 선택하고 DB를 연결관리자의 select @@servername을 실행하게 하고 출력된 결과를 스크립트 작업을 통해서 메세지 박스로 확인하는 작업이다.
해당 장비로 접속하여 실행되는 모습을 볼 수 있다.
'Business Inteligence (SSIS)' 카테고리의 다른 글
SQL2008에서 SQL2000 DTS열기 (0) | 2010.06.07 |
---|---|
For컨테이너-무한루프 (0) | 2010.06.03 |
스크립트task사용 (0) | 2010.06.03 |
Debugging and Logging in SSIS (0) | 2010.06.03 |