Udostępnij za pośrednictwem


Kodowanie niestandardowego zadania

Po utworzeniu klasy, która dziedziczy z Task Klasa podstawowa i stosowane DtsTaskAttribute atrybut do klasy, należy zastąpić wykonania właściwości i metod klasy podstawowej, aby zapewnić funkcje niestandardowe.

Konfigurowanie zadania

Sprawdzanie poprawności zadania

Podczas projektowania Integration Services pakiet umożliwia sprawdzanie poprawności Sprawdź ustawienia dla każdego zadania tak, aby wychwycić niepoprawne lub niewłaściwe ustawienia, aby jak najszybciej są ustawione, zamiast Znajdowanie wszystkich błędów w run -czas jedynie.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 upewnić się, że pakiet zawiera zadania, które mają duże prawdopodobieństwo działających na ich pierwszym uruchomieniu.

Sprawdzanie poprawności można zaimplementować za pomocą Validate metoda niestandardowego kodu.Uruchom -czas silnika sprawdza zadania przez wywołanie Validate Metoda zadań.Jest odpowiedzialny za developer zadanie zdefiniowanie kryteriów, które umożliwiają sprawdzanie poprawności zadania o pomyślnym lub niepomyślnym i powiadomić run -czas silnika wyników tej oceny.

Zadanie abstrakcyjna klasa podstawowa

Task Abstrakcyjna klasa podstawowa zawiera Validate metoda, która zastępuje każdego zadania, aby zdefiniować kryteria jego poprawności. SSIS Projektant automatycznie wywołuje Validate metoda wielokrotnie podczas projektowania pakiet i zapewnia użytkownikowi wizualnych, wystąpieniu ostrzeżeń lub błędów do identyfikowania problemów z konfiguracja zadań.Zadania zapewnia wyniki sprawdzania poprawności przez zwrócenie wartości z DTSExecResult wyliczenia i poprzez podnoszenie zdarzenia ostrzeżenie i błąd.Zdarzenia te zawierają informacje wyświetlane użytkownikowi w SSIS projektanta.

Wykonaj niektóre przykłady sprawdzania poprawności:

  • Menedżer połączeń sprawdza poprawność nazwy określonego pliku.

  • Menedżer połączeń sprawdza, czy typ danych wejściowych jest oczekiwanego typu, takiego jak plik XML.

  • Zadanie oczekuje danych wejściowych bazy danych sprawdza nie mogą odbierać danych z połączenia bez bazy danych.

  • Zadanie gwarantuje, że żaden z jego właściwości sprzeczna inne właściwości zestaw nad zadaniem.

  • Zadanie gwarantuje wszystkie wymagane zasoby używane przez zadania w wykonanie czas są dostępne.

Wydajność jest coś, co należy wziąć pod uwagę przy określaniu, co jest sprawdzana, a co nie.Na przykład wprowadzania do zadania może być połączenie w sieci, mała przepustowość lub duży ruch.Sprawdzanie może zająć kilka sekund do przetwarzania, aby sprawdzić, czy zasób jest dostępny.Sprawdzanie poprawności innego może spowodować przesłania danych do serwera, który jest wysoki popyt i procedury sprawdzania poprawności może być wolne.Chociaż istnieje wiele właściwości i ustawienia, które mogą być sprawdzone, wszystko nie powinny zostać zatwierdzone.

  • Kod w Validate również wywoływana jest metoda TaskHost przed zadanie jest uruchamiane oraz TaskHost przerywa wykonywanie, jeśli sprawdzanie poprawności nie powiedzie się.

Uwagi dotyczące interfejsu użytkownika podczas sprawdzania poprawności

Task Obejmuje IDTSComponentEvents interfejs jako parametr Validate metoda.IDTSComponentEvents Interfejs zawiera metody, które są wywoływane przez zadanie, aby podnieść zdarzenia w celu uruchomienia -czas silnika.FireWarning i FireError są wywoływane podczas ostrzeżenie lub błąd wystąpi podczas sprawdzania poprawności.Obie metody ostrzeżenie wymagają tych samych parametrów, które zawierają kod błędu, składnik źródło, opis, plik pomocy i informacji w kontekście pomocy. SSIS Projektant używa tych informacji, aby wyświetlić wizualnych na powierzchnię projektu.Wizualnych, które są dostarczane przez projektanta zawiera ikonę wykrzyknika, obok zadania na powierzchni projektanta.To wizualnie sygnalizuje użytkownikowi zadanie wymaga dodatkowej konfiguracja, aby kontynuować wykonywanie.

Ikona wykrzyknika także wyświetla etykietkę, zawierający komunikat o błędzie.Komunikat o błędzie jest dostarczana przez zadania w parametrze opis zdarzenie.Komunikaty o błędach są również wyświetlane w Listy zadań okienku Business Intelligence Development Studio, zapewniających użytkownika z centralnej lokalizacji, do przeglądania wszystkich błędów sprawdzania poprawności.

Sprawdzanie poprawności

Poniższy przykład kodu pokazuje zadania z UserName właściwość.Ta właściwość została określona jako wymagane do atestacji powiodła się.Jeśli właściwość nie jest zestaw, błąd księguje zadanie i zwraca Failure z DTSExecResult wyliczania.Validate Metoda zapakowane w blok try i catch i niepowodzenia sprawdzania poprawności, jeśli wystąpi wyjątek.

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

Utrwalanie zadania

Zazwyczaj nie trzeba zaimplementować trwałość niestandardowego zadania.Trwałość niestandardowe jest wymagana tylko wtedy, gdy złożone typy danych za pomocą właściwości obiektu.Aby uzyskać więcej informacji, zobacz Projektowanie obiektów niestandardowych dla usług Integration Services.

Wykonywanie zadania

W tej sekcji opisano sposób używania Execute metoda, która jest dziedziczone i zastąpione zadania.W tej sekcji wyjaśniono również różne sposoby udostępniania informacji o wyniki wykonania zadania.

Wykonywanie metody

Zadania, które są zawarte w pakiet uruchomione po Integration Services czasu wykonywania wywołań ich Execute metoda.Zadania wykonania ich podstawowe logika biznesowa i funkcji w tym metodai podać wyniki wykonania ogłaszając wiadomości zwracanie wartości z DTSExecResult wyliczenie i przesłanianie właściwość get z ExecutionValue Właściwości.

Task Klasy podstawowej zapewnia domyślne wykonania Execute metoda.Niestandardowe zadania zastąpić tę metoda, aby zdefiniować ich uruchamianie -czas funkcji.TaskHost Obiektu zawijany zadania izolowanie go z Uruchom -czas silnika i innych obiektów w pakiecie.Z powodu tej izolacji zadanie nie rozpoznaje lokalizacji pakiet jej wykonanie zamówienia i działa tylko w przypadku, gdy jest ona wywoływana w czasie wykonywania.Ta architektura uniemożliwia problemy występujące podczas zadania zmodyfikować pakiet podczas wykonywania.Zadanie jest pod warunkiem że dostęp do innych obiektów w pakiet tylko przez obiekty dostarczone jako parametry w Execute metoda.Parametry te pozwalają podnieść zadania zdarzenies i zapisy zapisu do zdarzenie logowanie, dostęp do zbierania zmiennych i zarejestrować źródłami danych w transakcjach, zachowując izolacji, który jest zagwarantowanie stabilność i niezawodność pakiet.

W poniższej tabela przedstawiono parametry podane do zadania w Execute metoda.

Parametr

Opis

[ T:Microsoft.SqlServer.Dts.Runtime.Connections ]

Kolekcja zawiera ConnectionManager obiektów dostępnych do zadań.

[ T:Microsoft.SqlServer.Dts.Runtime.VariableDispenser ]

Zawiera zmienne, które są dostępne dla zadania.Zadań używać zmiennych poprzez VariableDispenser; zadania należy używać bezpośrednio zmiennych.Rozdzielacz zmiennej blokuje i odblokowuje zmiennych i zapobiega zakleszczenia lub zastępuje.

[ T:Microsoft.SqlServer.Dts.Runtime.IDTSComponentEvents ]

Zawiera metody wywoływane przez zadanie wywołania zdarzeń do uruchomienia -czas silnika.

[ T:Microsoft.SqlServer.Dts.Runtime.IDTSLogging ]

Zawiera metody i właściwości używanych przez zadanie zapisać wpisy do zdarzenie dziennika.

Obiekt

Zawiera obiekt transakcji kontener jest częścią, jeśli istnieje.Ta wartość jest przekazywana jako parametr AcquireConnection metoda ConnectionManager obiektu.

Wykonanie zwrotnych

Zadania Otaczaj ich kod w try/catch bloki, aby zapobiec wyjątki od wniesionego do uruchomienia -czas silnika.Dzięki temu pakiet kończy wykonywanie, a nie zatrzymuje się nieoczekiwanie.Jednak uruchamianie -czas silnika zawiera inne mechanizmy obsługi warunków błędów, które mogą wystąpić podczas wykonywania zadania.Obejmują one księgowania błąd i ostrzeżenie wiadomości zwracanie wartości z DTSExecResult struktury ogłaszanie wiadomości zwracanie DTSExecResult wartość i ujawniania informacji na temat wyniki wykonania zadania przez ExecutionValue właściwość.

IDTSComponentEvents Zawiera interfejs FireWarning i FireError metody, które mogą być wywoływane przez zadanie do księgowania błędów i komunikaty ostrzegawcze run-czas silnika.Obie metody wymagane parametry takie jak kod błędu, składnik źródło, opis, plik pomocy i informacji w kontekście pomocy.W zależności od konfiguracja zadania wykonawczym odpowiada tych komunikatów podnoszenia zdarzenie i punkty przerwania lub zapisywania informacji w dzienniku zdarzeń.

TaskHost Zapewnia także ExecutionValue właściwość, którą można podać dodatkowe informacje o wyniki wykonanie.Na przykład, jeśli zadania usuwa wiersze z tabela jako część jego Execute metoda, może zwrócić liczbę wierszy usunięty jako wartość ExecutionValue właściwość.Ponadto TaskHost zawiera ExecValueVariable właściwość.Właściwość ta umożliwia użytkownikowi mapować ExecutionValue zwrócił zadań 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 pokazuje implementację Execute metoda i zawiera przesłonięte ExecutionValue właściwość.Zadania usuwa plik, który jest określony przez fileName właściwość zadania.Zadanie księguje ostrzeżenie, jeśli plik nie istnieje lub jeśli fileName właściwość jest pusty ciąg.Zwraca zadania Boolean wartość w ExecutionValue Właściwość wskazująca, 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
Ikona usług Integration Services (mała)Bieżąco z usług integracji

Najnowsze pliki do pobrania, artykuły, próbki i wideo firmy Microsoft, jak również wybranych rozwiązań ze Wspólnoty, odwiedź witrynę Integration Services strona na MSDN i TechNet:

Aby otrzymywać automatyczne powiadomienia dotyczące tych aktualizacji, zasubskrybuj źródła danych RSS dostępne na tej stronie.