데이터 흐름 구성 요소 버전 업그레이드
적용 대상: Azure Data Factory의 SQL Server SSIS Integration Runtime
이전 버전의 구성 요소로 만든 패키지에는 최신 버전의 구성 요소에서 사용이 수정된 사용자 지정 속성과 같이 더 이상 유효하지 않은 메타데이터가 포함될 수 있습니다. 기본 클래스의 메서드를 PerformUpgrade 재정의 PipelineComponent 하여 이전에 이전 패키지에 저장된 메타데이터를 업데이트하여 구성 요소의 현재 속성을 반영할 수 있습니다.
참고 항목
새 버전의 Integration Services에 맞게 사용자 지정 구성 요소를 다시 컴파일할 때 구성 요소의 속성이 변경되지 않은 경우에는 CurrentVersion 속성 값을 변경하지 않아도 됩니다.
예시
다음 샘플에는 가상의 데이터 흐름 구성 요소 버전 2.0의 코드가 포함되어 있습니다. 새 버전 번호는 .의 CurrentVersion 속성에 정의됩니다 DtsPipelineComponentAttribute. 이 구성 요소에는 임계값을 초과하는 숫자 값의 처리 방법을 정의하는 속성이 있습니다. 이 가상 구성 요소의 버전 1.0에서 이 속성은 이름이 RaiseErrorOnInvalidValue
였으며 해당 값으로는 부울 값 true 또는 false를 받아들였습니다. 가상 구성 요소의 버전 2.0에서 속성의 이름이 바뀌었 InvalidValueHandling
으며 사용자 지정 열거형에서 가능한 4가지 값 중 하나를 허용합니다.
다음 샘플에서 재정의된 PerformUpgrade 메서드는 다음 작업을 수행합니다.
구성 요소의 현재 버전을 가져옵니다.
이전 사용자 지정 속성의 값을 가져옵니다.
사용자 지정 속성 컬렉션에서 이전 속성을 제거합니다.
가능하면 이전 속성의 값을 기반으로 새 사용자 지정 속성의 값을 설정합니다.
버전 메타데이터를 구성 요소의 현재 버전으로 설정합니다.
참고 항목
데이터 흐름 엔진에서는 해당 엔진의 버전 번호를 PerformUpgrade 메서드에 pipelineVersion 매개 변수로 전달합니다. 이 매개 변수는 Integration Services 버전 1.0에서는 유용하지 않지만 이후 버전에서는 유용할 수 있습니다.
샘플 코드는 사용자 지정 속성에 대한 이전 부울 값에 직접 매핑되는 두 개의 열거형 값만 사용합니다. 사용자는 구성 요소의 사용자 지정 사용자 인터페이스, 고급 편집기 또는 프로그래밍 방식으로 사용 가능한 다른 열거형 값을 선택할 수 있습니다. 고급 편집기 사용자 지정 속성에 대한 열거형 값을 표시하는 방법에 대한 자세한 내용은 데이터 흐름 구성 요소의 디자인 타임 메서드에서 "사용자 지정 속성 만들기"를 참조하세요.
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
<DtsPipelineComponent(ComponentType:=ComponentType.Transform, CurrentVersion:=2)> _
Public Class PerformUpgrade
Inherits PipelineComponent
' Define the set of possible values for the new custom property.
Private Enum InvalidValueHandling
Ignore
FireInformation
FireWarning
FireError
End Enum
Public Overloads Overrides Sub PerformUpgrade(ByVal pipelineVersion As Integer)
' Obtain the current component version from the attribute.
Dim componentAttribute As DtsPipelineComponentAttribute = _
CType(Attribute.GetCustomAttribute(Me.GetType, _
GetType(DtsPipelineComponentAttribute), False), _
DtsPipelineComponentAttribute)
Dim currentVersion As Integer = componentAttribute.CurrentVersion
' If the component version saved in the package is less than
' the current version, Version 2, perform the upgrade.
If ComponentMetaData.Version < currentVersion Then
' Get the current value of the old custom property, RaiseErrorOnInvalidValue,
' and then remove the property from the custom property collection.
Dim oldValue As Boolean = False
Try
Dim oldProperty As IDTSCustomProperty100 = _
ComponentMetaData.CustomPropertyCollection("RaiseErrorOnInvalidValue")
oldValue = CType(oldProperty.Value, Boolean)
ComponentMetaData.CustomPropertyCollection.RemoveObjectByIndex("RaiseErrorOnInvalidValue")
Catch ex As Exception
' If the old custom property is not available, ignore the error.
End Try
' Set the value of the new custom property, InvalidValueHandling,
' by using the appropriate enumeration value.
Dim newProperty As IDTSCustomProperty100 = _
ComponentMetaData.CustomPropertyCollection("InvalidValueHandling")
If oldValue = True Then
newProperty.Value = InvalidValueHandling.FireError
Else
newProperty.Value = InvalidValueHandling.Ignore
End If
End If
' Update the saved component version metadata to the current version.
ComponentMetaData.Version = currentVersion
End Sub
End Class
using System;
using Microsoft.SqlServer.Dts.Pipeline;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
[DtsPipelineComponent(ComponentType = ComponentType.Transform, CurrentVersion = 2)]
public class PerformUpgradeCS :
PipelineComponent
// Define the set of possible values for the new custom property.
{
private enum InvalidValueHandling
{
Ignore,
FireInformation,
FireWarning,
FireError
};
public override void PerformUpgrade(int pipelineVersion)
{
// Obtain the current component version from the attribute.
DtsPipelineComponentAttribute componentAttribute =
(DtsPipelineComponentAttribute)Attribute.GetCustomAttribute(this.GetType(), typeof(DtsPipelineComponentAttribute), false);
int currentVersion = componentAttribute.CurrentVersion;
// If the component version saved in the package is less than
// the current version, Version 2, perform the upgrade.
if (ComponentMetaData.Version < currentVersion)
// Get the current value of the old custom property, RaiseErrorOnInvalidValue,
// and then remove the property from the custom property collection.
{
bool oldValue = false;
try
{
IDTSCustomProperty100 oldProperty =
ComponentMetaData.CustomPropertyCollection["RaiseErrorOnInvalidValue"];
oldValue = (bool)oldProperty.Value;
ComponentMetaData.CustomPropertyCollection.RemoveObjectByIndex("RaiseErrorOnInvalidValue");
}
catch (Exception ex)
{
// If the old custom property is not available, ignore the error.
}
// Set the value of the new custom property, InvalidValueHandling,
// by using the appropriate enumeration value.
IDTSCustomProperty100 newProperty =
ComponentMetaData.CustomPropertyCollection["InvalidValueHandling"];
if (oldValue == true)
{
newProperty.Value = InvalidValueHandling.FireError;
}
else
{
newProperty.Value = InvalidValueHandling.Ignore;
}
}
// Update the saved component version metadata to the current version.
ComponentMetaData.Version = currentVersion;
}
}