Share via


루프 패키지 예제에서 SQL 문 실행

루프 패키지 예제에서의 SQL 문 실행은 Foreach 루프 컨테이너를 사용하여 폴더의 텍스트 파일에 저장된 SQL 문을 반복 처리합니다. Transact-SQL 문은 AdventureWorks 데이터베이스에 5개의 테이블을 만듭니다. 한 테이블은 미국 내에서 유효한 각 영업 지역 대한 것입니다. Foreach File 열거자의 컬렉션 값은 변수에 매핑됩니다. 이 변수는 속성 식에서 각 열거가 있는 파일 연결 관리자의 연결 문자열 값을 업데이트하는 데 사용됩니다.

텍스트 파일의 데이터에는 몇 가지 문제점이 있습니다. 일부 우편 번호가 숫자 값으로 잘못 해석되어 맨 앞에 오는 0과 유효하지 않은 일부 영업 지역의 식별자가 누락될 수 있습니다. 패키지의 데이터 흐름은 유효하지 않은 우편 번호를 발견하여 수정하고 유효하지 않은 영업 지역의 데이터 행을 파일에 쓰며 AdventureWorks 데이터베이스의 5개 테이블 중 하나로 유효한 데이터 행을 전달합니다.

패키지를 다시 실행하면 데이터를 삽입하기 전에 테이블이 잘립니다.

영어 버전이 아닌 Windows에서 이 예제를 실행할 경우 예제를 열거나 실행하기 위해 Program Files 폴더의 해당 언어 버전 이름을 바꾸어야 할 수 있습니다.

ms160815.note(ko-kr,SQL.90).gif중요:
예제는 교육용으로만 제공되므로 프로덕션 환경에서 사용하기에 적합하지 않으며 프로덕션 환경에서 테스트를 수행하지 않았습니다. Microsoft에서는 이러한 예제에 대해 기술 지원을 제공하지 않습니다.

요구 사항

이 예제 패키지를 실행하기 전에 다음 조건이 충족되어야 합니다.

  • 예제 패키지 및 사용되는 데이터 파일이 로컬 하드 디스크 드라이브에 설치되어야 합니다.
  • AdventureWorks 데이터베이스를 설치했으며 이 데이터베이스에 대해 관리 권한이 있어야 합니다.
  • 명령줄에서 예제 패키지를 실행하려는 경우 SQL Server 2005 Integration Services(SSIS)를 설치해야 합니다.
  • SSIS 디자이너에서 예제 패키지를 열어 실행하려는 경우 Business Intelligence Development Studio를 설치해야 합니다.

예제를 설치하는 방법은 SQL Server 2005 온라인 도움말의 "예제 Integration Services 패키지 설치" 항목을 참조하십시오. SQL Server 2005 첫 릴리스 이후에 릴리스된 새 예제를 포함하여 최신 버전의 예제를 얻으려면 SQL Server 2005 예제 및 예제 데이터베이스(2006년 4월)를 참조하십시오.

예제 패키지의 위치

예제가 기본 설치 위치에 설치된 경우 SQL 문 실행 예제 패키지는 다음 폴더에 있습니다.

c:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\ExecuteSQLStatementsInLoop Sample\ExecuteSQLStatementsInLoop\

이 예제 패키지를 실행하려면 다음 파일이 필요합니다.

파일 설명

ExecuteSQLStatementsInLoop.dtsx

패키지 파일입니다.

Customer.txt

원본 데이터 파일입니다.

CustomersWithInvalidTerritoryID.txt

유효하지 않은 데이터를 쓸 파일입니다.

CreateProspectTableTerr1.sql

Territory1 테이블을 만드는 Transact-SQL 문입니다.

CreateProspectTableTerr2.sql

Territory2 테이블을 만드는 Transact-SQL 문입니다.

CreateProspectTableTerr3.sql

Territory3 테이블을 만드는 Transact-SQL 문입니다.

CreateProspectTableTerr4.sql

Territory4 테이블을 만드는 Transact-SQL 문입니다.

CreateProspectTableTerr5.sql

Territory5 테이블을 만드는 Transact-SQL 문입니다.

예제 실행

패키지는 dtexec 유틸리티를 사용하여 명령줄에서 실행하거나 Business Intelligence Development Studio에서 실행할 수 있습니다.

영어 버전이 아닌 Windows를 사용할 경우 예제 패키지를 성공적으로 실행하기 위해 패키지에서 사용되는 모든 파일 연결 관리자의 ConnectionString 속성을 업데이트해야 할 수 있습니다. 연결 관리자에 사용된 경로가 사용자 컴퓨터에서 올바른지 확인하고 필요한 경우 Program Files 폴더의 해당 언어 버전 이름이 포함되도록 경로를 수정해야 합니다.

이 예제에서는 CreateTableSQL, Customers 및 CustomersWithInvalidTerritoryID 연결 관리자에 대한 ConnectionString 속성에서 "Program Files"를 업데이트해야 할 수 있습니다.

dtexec를 사용하여 패키지를 실행하려면

  1. 명령 프롬프트 창을 엽니다.

  2. 디렉터리 변경 명령인 cd를 사용하여 해당 디렉터리를 dtexec의 위치인 C:\Program Files\Microsoft SQL Server\90\DTS\Binn으로 변경합니다.

  3. 다음 명령을 입력합니다.

    dtexec /f "C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\ExecuteSQLStatementsInLoop Sample\ExecuteSQLStatementsInLoop\ExecuteSQLStatementsInLoop.dtsx"
    
  4. Enter 키를 누릅니다.

dtexec 유틸리티를 사용하여 패키지를 실행하는 방법은 SQL Server 2005 온라인 설명서의 "dtexec 유틸리티" 항목을 참조하십시오.

Business Intelligence Development Studio에서 패키지를 실행하려면

  1. Business Intelligence Development Studio를 엽니다.

  2. 파일 메뉴에서 열기를 가리킨 다음 프로젝트/솔루션을 클릭합니다.

  3. ExecuteSQLStatementsInLoop 예제 폴더를 찾아 이름이 ExecuteSQLStatementsInLoop.sln인 파일을 두 번 클릭합니다.

  4. 솔루션 탐색기에서 SSIS 패키지 폴더의 ExecuteSQLStatementsInLoop.dtsx를 마우스 오른쪽 단추로 클릭한 후 패키지 실행을 클릭합니다.

ms160815.note(ko-kr,SQL.90).gif중요:
패키지를 처음 실행하기 전에 SSIS 디자이너에서 루프 패키지 예제의 SQL 문 실행을 연 경우 데이터 흐름 작업에 경고가 포함됩니다. 이 경고는 패키지가 사용하는 SQL Server 테이블이 아직 존재하지 않기 때문에 발생합니다. 이 테이블은 패키지를 처음 실행할 때 생성됩니다. 패키지를 한 번 이상 실행한 후 SSIS 디자이너를 다시 열면 경고가 나타나지 않습니다. 경고와 상관 없이 패키지는 성공적으로 실행됩니다.

예제의 구성 요소

다음 표에서는 예제에 사용된 Integration Services 작업, 컨테이너, 원본, 변환, 대상 및 연결 관리자를 나열합니다.

요소 용도

Foreach 루프

Foreach 루프 컨테이너인 Run SQL Statements는 Foreach File 열거자를 사용하여 Transact-SQL 문을 포함하는 파일을 반복 처리합니다. Foreach 루프 컨테이너는 SQL 실행 작업을 포함합니다.

SQL 실행 작업

Create TablesAdventureWorks 데이터베이스에 연결하여 테이블을 만드는 5가지 Transact-SQL 문을 실행합니다.

데이터 흐름 작업

Extract-Clean-Load Data는 데이터 흐름을 실행하여 텍스트 파일에서 데이터를 추출하고 데이터를 정리 및 배포한 후 AdventureWorks 데이터베이스의 테이블로 로드합니다.

플랫 파일 원본

Extract data는 텍스트 파일에서 데이터를 추출합니다.

조건부 분할 변환

Direct Rows by TerritoryIDTerritoryID 열의 값에 따라 여러 행을 서로 다른 출력으로 전달합니다. TerritoryID에 유효하지 않은 값이 있는 행은 기본 출력으로 전달합니다.

파생 열 변환

Fix Postal Code는 4자리 우편 번호 앞에 0을 추가하여 우편 번호를 정리합니다.

OLE DB 대상

5개의 OLE DB 대상은 5가지의 다른 지역 테이블로 데이터를 로드합니다.

파일 연결 관리자

CreateTablesSQL은 SQL CREATE TABLE 문을 포함하는 파일에 연결합니다.

플랫 파일 연결 관리자

Customers는 고객 원본 데이터를 포함하는 텍스트 파일에 연결합니다.

CustomsWithInvalidTerritoryId는 패키지가 유효하지 않은 데이터를 쓰는 텍스트 파일에 연결합니다.

OLE DB 연결 관리자

(local).AdventureWorks는 로컬 서버의 AdventureWorks 데이터베이스에 연결합니다.

예제 결과

루프 패키지 예제에서 SQL 문 실행 결과를 확인하려면 SQL Server Management Studio에서 쿼리 창을 열고 다음 Transact-SQL 쿼리를 입력하거나 복사한 후 쿼리를 실행합니다.

SELECT * FROM AdventureWorks.dbo.Territory1
SELECT * FROM AdventureWorks.dbo.Territory2
SELECT * FROM AdventureWorks.dbo.Territory3
SELECT * FROM AdventureWorks.dbo.Territory4
SELECT * FROM AdventureWorks.dbo.Territory5

이 쿼리는 텍스트 파일에서 추출되어 SQL Server 테이블로 로드된 데이터를 검색합니다.