Kodowanie niestandardowego zadania
Po utworzeniu klasy, która dziedziczy Task utworzyć klasę i stosowane DtsTaskAttribute atrybut do klasy, należy zastąpić stosowania właściwości i metod klasy podstawowej umożliwiają korzystanie z funkcji niestandardowej.
Konfigurowanie zadania
Sprawdzanie poprawności zadania
Podczas projektowania Integration Services pakiet, umożliwia sprawdzania poprawności Sprawdź ustawienia na poszczególnych zadań, dzięki czemu można przechwycić niepoprawne lub niewłaściwe ustawienia, tak szybko, jak są ustawione, zamiast Znajdowanie wszystkich błędów w procesie-czas tylko. W celu zatwierdzenia jest ustalenie, czy zadania zawiera nieprawidłowe ustawienia lub połączeń, które uniemożliwiają on uruchomiony pomyślnie.Dzięki temu się, że pakiet zawiera zadań, które mają dobrym pomysłem uruchamiania na ich pierwszym uruchomieniu.
Sprawdzanie poprawności można zaimplementować za pomocą Validate Metoda w niestandardowym kodem. Uruchom-czas aparat sprawdza poprawność zadania, wywołując Validate Metoda nad zadaniem. Odpowiada deweloper zadania do zdefiniowania kryteriów, które umożliwiają przy sprawdzaniu poprawności pomyślnym lub niepomyślnym zadań i powiadamiania wykonywania-czas aparat wynik tej oceny.
Zadanie abstract klasy podstawowej
The Task abstract base class provides the Validate metoda that each task overrides to define its validation criteria. The SSIS Designer automatically calls the Validate metoda multiple times during pakiet design, and provides visual cues to the user when warnings or errors occur to help identify problems with the konfiguracja of the task. Zadania dostarczyć wyniki sprawdzania poprawności przez zwrócenie wartości z DTSExecResult wyliczenia i podnosząc zdarzenia ostrzeżeń i błędów. Zdarzenia te zawierają informacje, które są wyświetlane użytkownikowi w SSIS Projektant.
Należy wykonać kilka przykładów do sprawdzania poprawności:
Menedżer połączeń sprawdza poprawność nazw plików.
Menedżer połączeń sprawdza, czy typ danych wejściowych jest oczekiwanego typu, takich jak plik XML.
Zadania oczekuje, że dane wejściowe bazy danych sprawdza, czy nie mogą odbierać danych z połączenia innych niż bazy danych.
Zadanie gwarantuje, że żaden z jego właściwości sprzeczna z innymi właściwościami zestaw na tym samym zadaniem.
Zadanie gwarantuje, że wszystkie wymagane zasoby używane przez zadania w wykonanie czas są dostępne.
Wydajność jest coś, co należy wziąć pod uwagę przy ustalaniu, co zostanie sprawdzony, a co nie jest.Na przykład dane wejściowe do zadania może być połączenie przez sieć, która ma niskiej przepustowości lub duży ruch.Sprawdzanie poprawności może zająć kilka sekund do przetwarzania, jeśli użytkownik chce sprawdzić, czy zasób jest dostępny.Innym sprawdzania poprawności może spowodować, że przesłanie do serwera, który znajduje się w przypadku wysokiego zapotrzebowania i procedury sprawdzania poprawności może być wolne.Chociaż istnieje wiele właściwości i ustawienia, które mogą zostać sprawdzone, nie wszystkie elementy powinny zostać zatwierdzone.
- Kod w Validate Metoda jest również określany jako TaskHost zanim zadanie jest uruchamiane, a także TaskHost przerywa wykonywanie, jeśli sprawdzenie nie powiodło się.
Uwagi dotyczące interfejs użytkownika podczas sprawdzania poprawności
The Task includes an IDTSComponentEvents interfejs as a parameter to the Validate metoda. The IDTSComponentEvents interfejs contains the methods that are called by the task in order to raise events to the run-czas engine. The FireWarning(Int32, String, String, String, Int32) and FireError(Int32, String, String, String, Int32) methods are called when a warning or error condition occurs during validation.Obie metody ostrzeżenie wymagają te same parametry, m. in. kod błędu, składnik urządzenie źródłowe, opis, plik pomocy oraz informacji kontekstu pomocy.The SSIS Designer uses this information to display visual cues on the design surface.Wizualnych, które są udostępniane przez projektanta zawiera ikonę wykrzyknika, pojawia się obok niego na powierzchni projektanta.Sygnalizuje to wizualne sygnalizacji użytkownikowi zadanie wymaga dodatkowej konfiguracja przed kontynuowaniem wykonywania.
Ikona wykrzyknika jest również wyświetlana etykietka narzędzia zawierająca komunikat o błędzie.Komunikat o błędzie jest udostępniany przez zadania w parametrze opis zdarzenie.Komunikaty o błędach są też wyświetlane w Lista zadań pane of Business Intelligence Development Studio, zapewniając centralną lokalizację do wyświetlania wszystkich błędów sprawdzania poprawności przez użytkownika.
Przykład sprawdzania poprawności
Poniższy przykład kodu pokazuje zadania z UserName Właściwość. Ta właściwość została określona jako wymagany do sprawdzania poprawności powiodło się.Jeśli właściwość nie jest ustawiona, zadanie księguje błąd i zwraca Failure() z DTSExecResult Wyliczanie. The Validate metoda is wrapped in a try/catch blok, and fails validation if an exception occurs.
using System;
using Microsoft.SqlServer.Dts.Runtime;
public class SampleTask : Task
{
private string userName = "";
public override DTSExecResult Validate(Connections connections,
VariableDispenser variableDispenser, IDTSComponentEvents events,
IDTSLogging log)
{
try
{
if (this.userName == "")
{
// Raise an OnError event.
events.FireError(0, "SampleTask", "The UserName property must be configured.", "", 0);
// Fail validation.
return DTSExecResult.Failure;
}
// Return success.
return DTSExecResult.Success;
}
catch (System.Exception exception)
{
// Capture exceptions, post an error, and fail validation.
events.FireError(0, "Sampletask", exception.Message, "", 0);
return DTSExecResult.Failure;
}
}
public string UserName
{
get
{
return this.userName;
}
set
{
this.userName = value;
}
}
}
Imports System
Imports Microsoft.SqlServer.Dts.Runtime
Public Class SampleTask
Inherits Task
Private _userName As String = ""
Public Overrides Function Validate(ByVal connections As Connections, _
ByVal variableDispenser As VariableDispenser, _
ByVal events As IDTSComponentEvents, _
ByVal log As IDTSLogging) As DTSExecResult
Try
If Me._userName = "" Then
' Raise an OnError event.
events.FireError(0, "SampleTask", "The UserName property must be configured.", "", 0)
' Fail validation.
Return DTSExecResult.Failure
End If
' Return success.
Return DTSExecResult.Success
Catch exception As System.Exception
' Capture exceptions, post an error, and fail validation.
events.FireError(0, "Sampletask", exception.Message, "", 0)
Return DTSExecResult.Failure
End Try
End Function
Public Property UserName() As String
Get
Return Me._userName
End Get
Set(ByVal Value As String)
Me._userName = Value
End Set
End Property
End Class
Pozostające zadania
Zazwyczaj nie trzeba zaimplementować trwałość niestandardowych dla zadania.Trwałość niestandardowego jest wymagany tylko wtedy, gdy złożone typy danych za pomocą właściwości obiektu.Aby uzyskać więcej informacji zobaczOpracowywanie niestandardowych obiektów dla usług integracja Services.
Wykonywanie zadania
W tej sekcji opisano sposób używania Execute Metoda, która jest dziedziczona i zastąpiona przez zadania. W tej sekcji omówiono także różne sposoby dostarczania informacji o wynikach wykonanie zadania.
wykonać metoda
Zadania, które są zawarte w pakiet podczas uruchamiania Integration Services wywołania w czasie wykonywania ich Execute Metoda. Wdrożenie ich podstawowych reguł biznesowych i funkcji w tej metodzie zadań i zapewnia wyniki jego działania, ogłaszając wiadomości, zwraca wartość z DTSExecResult Wyliczanie i zastępowanie właściwości get z ExecutionValue Właściwość.
The Task base class provides a default implementation of the Execute(Connections, VariableDispenser, IDTSComponentEvents, IDTSLogging, Object) metoda. Niestandardowe zadania zastąpić tę metoda, aby zdefiniować ich wykonywania-czas funkcjonalności.The TaskHost object wraps the task, isolating it from the run-czas engine and the other objects in the pakiet. Ze względu na to izolacji, zadanie nie rozpoznaje jego lokalizacji w pakiet ze względu na jego kolejności wykonywania i działa tylko wtedy, gdy jest on nazywany w czasie wykonywania.Ta architektura pozwala uniknąć problemów, które mogą wystąpić, gdy zadania modyfikowany podczas wykonywania pakiet.Zadanie jest pod warunkiem że dostęp do innych obiektów w pakiecie tylko przez obiekty dostarczone jako parametry w Execute(Connections, VariableDispenser, IDTSComponentEvents, IDTSLogging, Object) Metoda. Te parametry umożliwiają zadań podnieść zdarzenie s, tworzyć wpisy w celu zdarzenie logowania, uzyskać dostępu do kolekcja zmiennych i zarejestrować źródłami danych w transakcjach, zachowując nadal izolacji, jest to konieczne zapewnić stabilność i niezawodność pakiet.
W poniższej tabela opisano parametry, pod warunkiem, że do zadania w Execute(Connections, VariableDispenser, IDTSComponentEvents, IDTSLogging, Object) Metoda.
Parameter |
Description |
|---|---|
Connections |
Zawiera kolekcja ConnectionManager obiekty dostępne dla zadania. |
VariableDispenser |
Zawiera zmienne dostępne dla zadania.Zadania, należy używać zmiennych za pomocą VariableDispenser; zadań nie należy używać zmiennych bezpośrednio.Rozdzielacz zmiennej blokuje i odblokowuje zmiennych i uniemożliwia zakleszczenia lub są zastępowane. |
IDTSComponentEvents |
Zawiera metody wywoływane przez wywołania zdarzeń do aparatu wykonania zadania. |
IDTSLogging |
Zawiera metody oraz właściwości używanych przez zadanie, aby tworzyć wpisy w dzienniku zdarzeń. |
Obiekt |
Zawiera obiekt transakcji z pojemnika jest częścią, (jeśli istnieje).Ta wartość jest przekazywana jako parametr AcquireConnection(Object) Metoda ConnectionManager obiekt. |
Dostarczanie wykonanie opinii
Zadania zawijanie swój kod w try/catch bloki w celu zapobiegania wyjątki od zostanie podniesiona do potęgi aparat czas wykonywania. Takie rozwiązanie gwarantuje, że pakiet zakończy się wykonywanie i nie zatrzymuje się niespodziewanie.Jednak aparat wykonywania zawiera inne mechanizmy obsługi błędów warunki, które mogą wystąpić podczas wykonywania zadania.Obejmują one księgowania błąd i ostrzeżenie wiadomości, zwraca wartość z DTSExecResult Struktura ogłaszanie wiadomości, zwraca DTSExecResult wartość i ujawnienia informacji o wynikach wykonywanie zadań za pomocą ExecutionValue() Właściwość.
The IDTSComponentEvents interfejs contains the FireWarning(Int32, String, String, String, Int32) and FireError(Int32, String, String, String, Int32) methods, which can be called by the task to post error and warning messages to the run-czas engine. Obie metody wymaga parametrów, takich jak kod błędu, składnik urządzenie źródłowe, opis, plik pomocy i informacji kontekstu pomocy.W zależności od konfiguracja zadania w czasie wykonywania odnosi się do tych komunikatów przez zwiększenie zdarzeń i punkty przerwania lub zapisywania informacji w dzienniku zdarzeń.
The TaskHost also provides the ExecutionValue() właściwość that can be used to provide additional information about the wyniki of execution. Na przykład, jeśli zadania usuwa wiersze z tabela jako część jego Execute Metoda, może zwrócić liczbę wierszy usunięta jako wartość ExecutionValue() Właściwość. Ponadto TaskHost zapewnia ExecValueVariable() Właściwość. Właściwość ta umożliwia użytkownikowi mapowania ExecutionValue() zwracane do zadania do dowolnej zmiennej widoczne dla zadania. Aby ustanowić pierwszeństwo ograniczeń między zadaniami można następnie określoną zmienną.
Przykład wykonanie
Poniższy przykład kodu demonstruje implementacja Execute metoda i przedstawia zastąpiona ExecutionValue Właściwość. Zadanie spowoduje usunięcie pliku określonego przez parametr fileName Właściwość zadania. Zadanie księguje ostrzeżenie, jeśli plik nie istnieje lub jeśli fileName Właściwość jest ciągiem pustym. Zwraca zadania Boolean wartość w ExecutionValue() Właściwość, aby wskazać, czy plik został usunięty.
using System;
using Microsoft.SqlServer.Dts.Runtime;
public class SampleTask : Task
{
private string fileName = "";
private bool fileDeleted = false;
public override DTSExecResult Execute(Connections cons,
VariableDispenser vars, IDTSComponentEvents events,
IDTSLogging log, Object txn)
{
try
{
if (this.fileName == "")
{
events.FireWarning(0, "SampleTask", "No file specified.", "", 0);
this.fileDeleted = false;
}
else
{
if (System.IO.File.Exists(this.fileName))
{
System.IO.File.Delete(this.fileName);
this.fileDeleted = true;
}
else
this.fileDeleted = false;
}
return DTSExecResult.Success;
}
catch (System.Exception exception)
{
// Capture the exception and post an error.
events.FireError(0, "Sampletask", exception.Message, "", 0);
return DTSExecResult.Failure;
}
}
public string FileName
{
get { return this.fileName; }
set { this.fileName = value; }
}
public override object ExecutionValue
{
get { return this.fileDeleted; }
}
}
Imports System
Imports Microsoft.SqlServer.Dts.Runtime
Public Class SampleTask
Inherits Task
Private _fileName As String = ""
Private _fileDeleted As Boolean = False
Public Overrides Function Execute(ByVal cons As Connections, _
ByVal vars As VariableDispenser, ByVal events As IDTSComponentEvents, _
ByVal log As IDTSLogging, ByVal txn As Object) As DTSExecResult
Try
If Me._fileName = "" Then
events.FireWarning(0, "SampleTask", "No file specified.", "", 0)
Me._fileDeleted = False
Else
If System.IO.File.Exists(Me._fileName) Then
System.IO.File.Delete(Me._fileName)
Me._fileDeleted = True
Else
Me._fileDeleted = False
End If
End If
Return DTSExecResult.Success
Catch exception As System.Exception
' Capture the exception and post an error.
events.FireError(0, "Sampletask", exception.Message, "", 0)
Return DTSExecResult.Failure
End Try
End Function
Public Property FileName() As String
Get
Return Me._fileName
End Get
Set(ByVal Value As String)
Me._fileName = Value
End Set
End Property
Public Overrides ReadOnly Property ExecutionValue() As Object
Get
Return Me._fileDeleted
End Get
End Property
End Class
|
Konfiguracja w aktualizacji z usług integracja Services pobytu