외부 메타데이터 구현
적용 대상: Azure Data Factory의 SQL Server SSIS Integration Runtime
구성 요소가 데이터 원본과 연결이 끊어지면 인터페이스를 사용하여 IDTSExternalMetadataColumnCollection100 외부 데이터 원본의 열에 대해 입력 및 출력 열 컬렉션의 열에 대한 유효성을 검사할 수 있습니다. 이 인터페이스를 사용하면 외부 데이터 원본에서 열의 스냅샷을 유지하고 이러한 열을 구성 요소의 입력 및 출력 열 컬렉션에 있는 열에 매핑할 수 있습니다.
외부 메타데이터 열을 구현하면 추가 열 컬렉션에 대한 유지 관리 및 유효성 검사를 수행해야 하므로 구성 요소 개발의 오버헤드와 복잡성이 늘어나지만 유효성 검사를 위한 고비용의 서버 왕복을 피할 수 있으면 이 개발 작업을 성공적으로 수행할 수 있습니다.
외부 메타데이터 열 채우기
외부 메타데이터 열은 일반적으로 해당 입력 또는 출력 열을 만들 때 컬렉션에 추가됩니다. 메서드를 호출 New 하여 새 열을 만듭니다. 그런 다음 열의 속성이 외부 데이터 원본과 일치하도록 설정됩니다.
외부 메타데이터 열을 해당하는 입력 또는 출력 열에 매핑하려면 해당 입력 또는 출력 열의 ExternalMetadataColumnID 속성에 외부 메타데이터 열의 ID를 할당합니다. 이렇게 하면 컬렉션의 GetObjectByID 메서드를 사용하여 특정 입력 또는 출력 열에 대한 외부 메타데이터 열을 쉽게 찾을 수 있습니다.
다음 예제에서는 외부 메타데이터 열을 만든 다음 속성을 설정하여 열을 출력 열에 매핑하는 ExternalMetadataColumnID 방법을 보여줍니다.
public void CreateExternalMetaDataColumn(IDTSOutput100 output, int outputColumnID )
{
IDTSOutputColumn100 oColumn = output.OutputColumnCollection.GetObjectByID(outputColumnID);
IDTSExternalMetadataColumn100 eColumn = output.ExternalMetadataColumnCollection.New();
eColumn.DataType = oColumn.DataType;
eColumn.Precision = oColumn.Precision;
eColumn.Scale = oColumn.Scale;
eColumn.Length = oColumn.Length;
eColumn.CodePage = oColumn.CodePage;
oColumn.ExternalMetadataColumnID = eColumn.ID;
}
Public Sub CreateExternalMetaDataColumn(ByVal output As IDTSOutput100, ByVal outputColumnID As Integer)
Dim oColumn As IDTSOutputColumn100 = output.OutputColumnCollection.GetObjectByID(outputColumnID)
Dim eColumn As IDTSExternalMetadataColumn100 = output.ExternalMetadataColumnCollection.New
eColumn.DataType = oColumn.DataType
eColumn.Precision = oColumn.Precision
eColumn.Scale = oColumn.Scale
eColumn.Length = oColumn.Length
eColumn.CodePage = oColumn.CodePage
oColumn.ExternalMetadataColumnID = eColumn.ID
End Sub
외부 메타데이터 열을 사용하여 유효성 검사
추가 열 컬렉션에 대해 유효성을 검사해야 하므로 외부 메타데이터 열 컬렉션을 유지하는 구성 요소에 대한 추가 단계가 필요합니다. 유효성 검사는 연결 시 유효성 검사와 연결 해제 시 유효성 검사로 나눌 수 있습니다.
연결된 유효성 검사
구성 요소가 외부 데이터 원본에 연결된 경우 입력 또는 출력 컬렉션의 열은 외부 데이터 원본에 대해 직접 확인됩니다. 또한 외부 메타데이터 컬렉션의 열의 유효성을 검사해야 합니다. SQL Server Data Tools(SSDT)의 고급 편집기에서는 외부 메타데이터 컬렉션을 수정할 수 있으며, 이때 컬렉션의 변경 내용은 검색할 수 없으므로 이 작업이 필요합니다. 따라서 연결된 경우 구성 요소는 외부 메타데이터 열 컬렉션의 열이 외부 데이터 원본의 열을 계속 반영하도록 해야 합니다.
고급 편집기에서 외부 메타데이터 컬렉션의 IsUsed 속성을 false로 설정하여 해당 컬렉션을 숨길 수 있습니다. 그러나 이렇게 하면 사용자가 입력 또는 출력 컬렉션의 열을 외부 메타데이터 열 컬렉션의 열에 매핑할 수 있는 편집기의 열 매핑 탭도 숨깁니다. 이 속성을 false로 설정해도 개발자는 컬렉션을 프로그래밍 방식으로 수정할 수 있지만 SQL Server Data Tools(SSDT)에서만 사용되는 구성 요소의 외부 메타데이터 열 컬렉션은 어느 정도 보호됩니다.
연결이 끊긴 유효성 검사
구성 요소가 외부 데이터 원본과 연결이 끊어지면 입력 또는 출력 컬렉션의 열이 외부 메타데이터 컬렉션의 열에 대해 직접 확인되고 외부 원본에 대해 확인되지 않으므로 유효성 검사가 간소화됩니다. 구성 요소는 외부 데이터 원본에 대한 연결이 설정되지 않았거나 속성이 false일 때 ValidateExternalMetadata 연결이 끊어진 유효성 검사를 수행해야 합니다.
다음 코드 예제에서는 외부 메타데이터 열 컬렉션에 대해 유효성 검사를 수행하는 구성 요소의 구현을 보여 줍니다.
public override DTSValidationStatus Validate()
{
if( this.isConnected && ComponentMetaData.ValidateExternalMetaData )
{
// TODO: Perform connected validation.
}
else
{
// TODO: Perform disconnected validation.
}
}
Public Overrides Function Validate() As DTSValidationStatus
If Me.isConnected AndAlso ComponentMetaData.ValidateExternalMetaData Then
' TODO: Perform connected validation.
Else
' TODO: Perform disconnected validation.
End If
End Function