스크립트 구성 요소 편집기에서 스크립트 구성 요소 구성
적용 대상: Azure Data Factory의 SQL Server SSIS Integration Runtime
스크립트 구성 요소에서 사용자 지정 코드를 작성하기 전에 원본, 변환 또는 대상을 만들려는 데이터 흐름 구성 요소 유형을 선택한 다음 스크립트 변환 편집기에서 구성 요소의 메타데이터 및 속성을 구성해야 합니다.
만들 구성 요소 유형 선택
SSIS 디자이너 의 데이터 흐름 창에 스크립트 구성 요소를 추가하면 스크립트 구성 요소 유형 선택 대화 상자가 나타납니다. 구성 요소를 원본, 변환 또는 대상으로 미리 구성합니다. 이 초기 선택을 수행한 후 스크립트 변환 편집기에서 구성 요소를 계속 구성할 수 있습니다.
스크립트 구성 요소에 대한 기본 스크립트 언어를 설정하려면 옵션 대화 상자의 일반 페이지에서 스크립팅 언어 옵션을 사용합니다. 자세한 내용은 일반 페이지를 참조 하세요.
두 가지 디자인 타임 모드 이해
SSIS 디자이너에서 스크립트 구성 요소에는 메타데이터 디자인 모드와 코드 디자인 모드의 두 가지 모드가 있습니다.
스크립트 변환 편집기를 열면 구성 요소가 메타데이터 디자인 모드로 전환됩니다. 이 모드에서는 입력 열을 선택하고 출력 및 출력 열을 추가하거나 구성할 수 있지만 코드를 작성할 수는 없습니다. 구성 요소의 메타데이터를 구성한 후 코드 디자인 모드로 전환하여 스크립트를 작성할 수 있습니다.
스크립트 편집을 클릭하여 코드 디자인 모드로 전환하면 스크립트 구성 요소가 메타데이터를 잠가 추가 변경을 방지한 다음 입력 및 출력의 메타데이터에서 기본 코드를 자동으로 생성합니다. 자동 생성된 코드가 완료되면 사용자 지정 코드를 입력할 수 있습니다. 코드는 자동 생성된 기본 클래스를 사용하여 입력 행을 처리하고, 버퍼의 버퍼 및 열에 액세스하고, 패키지에서 연결 관리자 및 변수를 모두 강력한 형식의 개체로 검색합니다.
코드 디자인 모드에서 사용자 지정 코드를 입력한 후에는 메타데이터 디자인 모드로 다시 전환할 수 있습니다. 입력한 코드는 삭제되지 않습니다. 그러나 메타데이터에 대한 후속 변경으로 인해 기본 클래스가 다시 생성됩니다. 사용자 지정 코드에서 참조하는 개체가 더 이상 존재하지 않거나 수정되었을 수 있으므로 구성 요소가 유효성 검사에 실패할 수 있습니다. 이 경우 다시 생성된 기본 클래스에 대해 성공적으로 컴파일할 수 있도록 코드를 수동으로 수정해야 합니다.
메타데이터 디자인 모드에서 구성 요소 구성
메타데이터 디자인 모드에서는 입력 열을 선택하고 출력 및 출력 열을 추가 및 구성할 수 있지만 코드를 작성할 수는 없습니다. 구성 요소의 메타데이터를 구성한 후 코드 디자인 모드로 전환하여 스크립트를 작성합니다.
사용자 지정 편집기에서 구성해야 하는 속성은 스크립트 구성 요소의 사용량에 따라 달라집니다. 스크립트 구성 요소는 원본, 변환 또는 대상으로 구성할 수 있습니다. 구성 요소의 사용 방법에 따라 입력 또는 출력 또는 둘 다를 지원합니다. 작성할 사용자 지정 코드는 입력 및 출력 행과 열을 처리합니다.
스크립트 변환 편집기의 입력 열 페이지
스크립트 변환 편집기의 입력 열 페이지는 변환 및 대상에 대해 표시되지만 원본에는 표시되지 않습니다. 이 페이지에서는 사용자 지정 스크립트에서 사용할 수 있도록 하려는 사용 가능한 입력 열을 선택하고 읽기 전용 또는 읽기/쓰기 액세스를 지정합니다.
이 메타데이터를 기반으로 생성되는 코드 프로젝트에서 BufferWrapper 프로젝트 항목에는 각 입력에 대한 클래스가 포함되며 이 클래스에는 선택한 각 입력 열에 대한 형식화된 접근자 속성이 포함됩니다. 예를 들어 CustomerInput이라는 입력에서 정수 CustomerID 열과 문자열 CustomerName 열을 선택하는 경우, BufferWrapper 프로젝트 항목에는 ScriptBuffer에서 파생된 CustomerInput 클래스가 포함되며, 이 CustomerInput 클래스는 CustomerID라는 정수 속성과 CustomerName이라는 문자열 속성을 노출합니다. 이 규칙을 사용하면 다음과 같이 형식 검사를 사용하여 코드를 작성할 수 있습니다.
Dim currentCustomerID as Integer = CustomerInput.CustomerID
Dim currentCustomerName as String = CustomerInput.CustomerName
특정 유형의 데이터 흐름 구성 요소에 대한 입력 열을 구성하는 방법에 대한 자세한 내용은 특정 유형의 스크립트 구성 요소 개발의 해당 예제를 참조하세요.
스크립트 변환 편집기의 입/출력 페이지
스크립트 변환 편집기의 입/출력 페이지는 원본, 변환 및 대상에 대해 표시됩니다. 이 페이지에서는 다음 제한 사항 내에서 사용자 지정 스크립트에서 사용할 입력, 출력 및 출력 열을 추가, 제거 및 구성합니다.
원본으로 사용되는 스크립트 구성 요소는 입력을 사용하지 않으며 여러 출력을 지원합니다.
변환으로 사용되는 경우 스크립트 구성 요소는 하나의 입력 및 여러 출력을 지원합니다.
대상으로 사용되는 경우 스크립트 구성 요소는 하나의 입력을 지원하며 출력이 없습니다.
이 메타데이터를 기반으로 생성되는 코드 프로젝트에서 BufferWrapper 프로젝트 항목에는 각 입력 및 출력에 대한 클래스가 포함됩니다. 예를 들어 CustomerOutput이라는 출력을 만드는 경우 BufferWrapper 프로젝트 항목에는 파생되는 ScriptBufferCustomerOutput 클래스가 포함되고 CustomerOutput 클래스에는 생성된 각 출력 열에 대한 형식화된 접근자 속성이 포함됩니다.
출력 열은 입력 및 출력 페이지에서만 구성할 수 있습니다 . 입력 열 페이지에서 변환 및 대상에 대한 입력 열을 선택할 수 있습니다. BufferWrapper 프로젝트 항목에 만들어진 형식화된 접근자 속성은 출력 열에 대한 쓰기 전용 속성이 됩니다. 입력 열의 접근자 속성은 입력 열 페이지의 각 열에 대해 선택한 사용 유형에 따라 읽기 전용 또는 읽기/쓰기가 가능합니다.
특정 유형의 데이터 흐름 구성 요소에 대한 입력 및 출력을 구성하는 방법에 대한 자세한 내용은 특정 형식의 스크립트 구성 요소 개발에서 적절한 예제를 참조하세요.
참고 항목
오류 행의 자동 처리를 위해 스크립트 구성 요소에서 출력을 오류 출력으로 직접 구성할 수는 없지만, 추가 출력을 만들고 스크립트를 사용하여 적절한 경우 행을 이 출력으로 전달하여 오류 출력의 기능을 재현할 수 있습니다. 자세한 내용은 스크립트 구성 요소의 오류 출력 시뮬레이션을 참조하세요.
출력의 ExclusionGroup 및 SynchronousInputID 속성
ExclusionGroup 속성은 동기 출력이 있는 변환에서만 0이 아닌 값을 가지며, 여기서 코드는 필터링 또는 분기를 수행하고 각 행을 0이 아닌 동일한 ExclusionGroup 값을 공유하는 출력 중 하나로 전달합니다. 예를 들어 변환은 행을 기본 출력 또는 오류 출력으로 보낼 수 있습니다. 이 시나리오에 대한 추가 출력을 만들 때는 SynchronousInputID 속성의 값을 구성 요소의 입력에 대한 ID와 일치하는 정수로 설정해야 합니다.
SynchronousInputID 속성에는 동기 출력이 있는 변환에서만 0이 아닌 값이 있습니다. 이 속성의 값이 0이면 출력이 비동기임을 의미합니다. 새 행을 추가하지 않고 행이 선택한 출력 또는 출력으로 전달되는 동기 출력의 경우 이 속성에는 구성 요소 입력의 ID가 포함되어야 합니다.
참고 항목
스크립트 변환 편집기가 첫 번째 출력을 만들 때 편집기에서는 출력의 SynchronousInputID 속성을 구성 요소의 입력 ID로 설정합니다. 그러나 편집기에서 후속 출력을 만들 때 편집기에서는 해당 출력의 SynchronousInputID 속성을 0으로 설정합니다.
동기 출력을 사용하여 구성 요소를 만드는 경우 각 출력에는 해당 SynchronousInputID 속성이 구성 요소 입력의 ID로 설정되어 있어야 합니다. 따라서 첫 번째 출력 이후에 편집기가 만드는 각 출력에는 SynchronousInputID 값이 0에서 구성 요소 입력의 ID로 변경되어야 합니다.
비동기 출력을 사용하여 구성 요소를 만드는 경우 각 출력에는 SynchronousInputID 속성이 0으로 설정되어 있어야 합니다. 따라서 첫 번째 출력에는 해당 SynchronousInputID 값이 구성 요소의 입력 ID에서 0으로 변경되어야 합니다.
스크립트 구성 요소의 두 동기 출력 중 하나에 행을 지정하는 예제는 스크립트 구성 요소를 사용하여 동기 변환 만들기를 참조 하세요.
생성된 스크립트의 개체 이름
스크립트 구성 요소는 입력 및 출력의 이름을 구문 분석하고 입력 및 출력의 열 이름을 구문 분석하며 이러한 이름을 기반으로 BufferWrapper 프로젝트 항목에서 클래스와 속성을 생성합니다. 찾은 이름에 UppercaseLetter, LowercaseLetter, TitlecaseLetter, ModifierLetter, OtherLetter 또는 DecimalDigitLetter 유니코드 범주에 속하지 않은 문자가 포함되어 있으면 생성된 이름에서 유효하지 않은 해당 문자가 삭제됩니다. 예를 들어 공백이 삭제되므로 이름 FirstName과 [First Name]이 있는 두 개의 입력 열은 모두 열 이름 FirstName을 갖는 것으로 해석되며 예측할 수 없는 결과가 발생합니다. 이러한 상황을 방지하려면 스크립트 구성 요소에서 사용하는 입력 및 출력 열의 이름과 입력 및 출력 열에는 이 섹션에 나열된 유니코드 범주의 문자만 포함되어야 합니다.
스크립트 변환 편집기의 스크립트 페이지
스크립트 태스크 편집기의 스크립트 페이지에서 스크립트 태스크에 대한 고유한 이름과 설명을 할당합니다. 다음 속성에 대한 값을 할당할 수도 있습니다.
참고 항목
SQL Server 2008 Integration Services(SSIS) 이상 버전에서는 모든 스크립트가 미리 컴파일됩니다. 이전 버전에서는 태스크에 대한 Precompile 속성을 설정하여 스크립트가 미리 컴파일되었는지 여부를 지정했습니다.
ValidateExternalMetadata 속성
ValidateExternalMetadata 속성의 부울 값은 구성 요소가 디자인 타임에 외부 데이터 원본에 대한 유효성 검사를 수행해야 하는지 또는 런타임까지 유효성 검사를 연기해야 하는지 여부를 지정합니다. 기본적으로 이 속성의 값은 True입니다. 즉, 디자인 타임과 런타임에 외부 메타데이터의 유효성이 검사됩니다. 디자인 타임에 외부 데이터 원본을 사용할 수 없는 경우(예: 패키지가 원본을 다운로드하거나 런타임에만 대상을 만드는 경우) 이 속성 의 값을 False 로 설정할 수 있습니다.
ReadOnlyVariables 및 ReadWriteVariables 속성
기존 변수의 쉼표로 구분된 목록을 이러한 속성의 값으로 입력하여 스크립트 구성 요소 코드 내에서 변수를 읽기 전용 또는 읽기/쓰기 액세스에 사용할 수 있도록 할 수 있습니다. 변수는 코드에서 자동으로 생성된 기본 클래스의 ReadOnlyVariables 및 ReadWriteVariables 속성을 통해 액세스할 수 있습니다. 자세한 내용은 스크립트 구성 요소에서 변수 사용을 참조 하세요.
참고 항목
변수 이름은 대소문자를 구분합니다.
ScriptLanguage
Microsoft Visual Basic 또는 Microsoft Visual C#을 스크립트 구성 요소의 프로그래밍 언어로 선택할 수 있습니다.
스크립트 편집 단추
스크립트 편집 단추는 사용자 지정 스크립트를 작성하는 MICROSOFT VSTA(Visual Studio Tools for Applications) IDE를 엽니다. 자세한 내용은 스크립트 구성 요소 코딩 및 디버깅을 참조하세요.
스크립트 변환 편집기의 연결 관리자 페이지
스크립트 변환 편집기의 연결 관리자 페이지에서는 사용자 지정 스크립트에 사용할 연결 관리자를 추가하거나 제거합니다. 일반적으로 원본 또는 대상 구성 요소를 만들 때 연결 관리자를 참조해야 합니다.
이 메타데이터를 기반으로 생성될 코드 프로젝트에서 ComponentWrapper 프로젝트 항목에는 선택한 각 연결 관리자에 대해 형식화된 접근자 속성이 있는 Connections 컬렉션 클래스가 포함됩니다. 형식화된 각 접근자 속성은 연결 관리자 자체와 이름이 같으며 연결 관리자에 대한 참조를 인스턴스 IDTSConnectionManager100로 반환합니다. 예를 들어 편집기의 연결 관리자 페이지에 이름이 지정된 MyADONETConnection
연결 관리자를 추가한 경우 다음 코드를 사용하여 스크립트에서 연결 관리자에 대한 참조를 가져올 수 있습니다.
Dim myADONETConnectionManager As IDTSConnectionManager100 = _
Me.Connections.MyADONETConnection
자세한 내용은 스크립트 구성 요소의 데이터 원본에 연결을 참조 하세요.