Uaktualnianie wersja składnika przepływ danych
Pakiety, które zostały utworzone za pomocą starszej wersja składnika, może zawierać metadane, które nie jest już prawidłowy, takie jak właściwości niestandardowych, których użycie została zmodyfikowana w nowszej wersja składnika.Można zastąpić PerformUpgrade(Int32) Metoda PipelineComponent Klasa podstawowa aktualizacji metadane uprzednio zapisane w starszych pakietów, aby odzwierciedlić bieżące właściwości składnika.
Uwaga
Ponowna kompilacja niestandardowy składnik do nowej wersja Integration Services, nie trzeba zmieniać wartości DtsPipelineComponentAttributeCurrentVersion() Właściwość Jeśli właściwości składnika nie uległy zmianie.
Przykład
Poniższy przykład zawiera kod wersja 2.0 składnik przepływu fikcyjnych danych.Numer nowej wersja jest zdefiniowany w CurrentVersion() Właściwość DtsPipelineComponentAttribute. Składnik ma właściwość, która definiuje sposób wartości przekraczających próg mają być obsługiwane.W wersja 1.0 fikcyjne komponentu ta właściwość została o nazwie RaiseErrorOnInvalidValue i zaakceptowane, logiczny PRAWDA lub FAŁSZ. W wersja 2.0 fikcyjne składnika właściwość została zmieniona na InvalidValueHandling i przyjmuje jedną z czterech wartości z wyliczenia niestandardowych.
Zastąpiona PerformUpgrade(Int32) Metoda w następującym przykładzie wykonuje następujące czynności:
Pobiera aktualną wersja składnika.
Pobiera wartość stare właściwość niestandardowych.
Usuwa stare właściwość z kolekcja właściwość niestandardowych.
Ustawia wartość nowej właściwość niestandardowych na podstawie wartości właściwość stare, jeśli jest to możliwe.
Ustawia metadane wersja bieżąca wersja składnika.
Uwaga
Aparat przepływ danych przekazuje numer własnej wersja do PerformUpgrade(Int32) Metoda pipelineVersion parametr. Ten parametr nie jest użyteczne w wersja 1.0 Integration Services, ale mogą być przydatne w kolejnych wersjach.
Kod przykładowy używa tylko wartości wyliczenia dwóch mapowania bezpośrednio na wcześniejsze wartości logiczne dla właściwość niestandardowej.Użytkownicy mogą wybrać inne wartości wyliczenia dostępne za pośrednictwem interfejs użytkownika niestandardowego składnika, w edytorze zaawansowane lub programowo.Aby uzyskać informacje na temat wyświetlania wartości wyliczenia dla właściwość niestandardowej w edytorze zaawansowane zobacz "" Tworzenie niestandardowych właściwość"w Metody czasu projektowania składnik przepływu danych.
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;
}
}
|