Aracılığıyla paylaş


Özel görev kodlama

Gelen devralan bir sınıf oluşturduktan sonra Task sınıf temel ve uygulanan DtsTaskAttribute öznitelik sınıfı uygulama özelliklerini ve özel iþlevsellik saà taban sınıfın yöntemlerini kılmalıdır.

Görev yapılandırma

Görev doğrulanıyor

Tasarladığınız saat bir Integration Services oldukları gibi yanlış ya da uygun olmayan küme tings yakalamak için paketin doğrulama her görevde tings küme doğrulamak için kullanabileceğiniz küme, çalıştırma sırasında yalnızca tüm hataları bulma yerine. Doğrulama amacı, görev başarıyla çalışmasını engelleyecektir bağlantıları ya da geçersiz ayarları içeriyor belirlemektir.Bu paket, bunların ilk çalıştırmada üzerinde çalışan olasılığı olan görevler içeren kesinleştirir.

Doğrulama kullanarak uygulamanız Validate özel kod yöntem. Çalışma-saat çağırarak, bir görev altyapısı doğrulama Validate Görevdeki yöntem. Bir görev, başarılı veya başarısız doğrulama size ölçütleri tanımlayın ve çalışma-bildirmek için görev geliştirici sorumluluğundadır saat alt yapısı, bu değerlendirmeyi sonucu.

Görev Özet temel sınıfı

The Task abstract base class provides the Validate yöntem that each task overrides to define its validation criteria. The SSIS Designer automatically calls the Validate yöntem multiple times during paket design, and provides visual cues to the user when warnings or errors occur to help identify problems with the yapılandırma of the task. Görevleri, doğrulama sonuçlar arasında bir değer döndürerek sağlamak DTSExecResult numaralandırma ve uyarı ve hata olaylarını yükseltme. Bu olaylar, kullanıcıya görüntülenen bilgiler içerir... SSIS Tasarımcı.

Doğrulama için bazı örnekler izleyin:

  • Bir Bağlantı Yöneticisi, belirli bir dosya adı doğrular.

  • Bir Bağlantı Yöneticisi, giriş türü, beklenen türünü örneğin, bir XML dosyası olduğunu doğrular.

  • Veritabanı girişi bekleyen BIR görev, olmayan veritabanı bağlantı verileri alamıyor doğrular.

  • Bir görevin özelliklerini hiçbiri diğer özellikleri uyuşmamaktadır güvence altına alır küme aynı görev üzerinde.

  • Gerekli tüm kaynakları yürütme sırasında görev tarafından kullanılan BIR görevi garanti eder saat kullanılabilir.

Performans doğrulanacağını ne ve ne olduğunu belirlerken göz önüne almanız gereken bir şey var.Örneğin, bir göreve giriş düşük bant genişlikli veya yoğun trafiğe sahip bir ağ üzerinden bir bağlantı olabilir.Doğrulama, kaynağın kullanılabilir olduğunu doğrulamak isterseniz işlemek için birkaç saniye sürebilir.Doğrulama yordamına yavaş olabilir ve başka bir doğrulama yüksek isteğe bağlı bir sunucuya bir herşey neden.Olmakla birlikte pek çok özellik ve onaylanabildiğini ayarları, değil her şeyi doğrulanması.

  • Kod, Validate yöntem de adlandırılan TaskHost görevi çalıştırmadan önce TaskHost doğrulama başarısız olursa, yürütme iptal eder.

Doğrulama sırasında kullanıcı arabirim ile ilgili konular

The Task includes an IDTSComponentEvents arabirim as a parameter to the Validate yöntem. The IDTSComponentEvents arabirim contains the methods that are called by the task in order to raise events to the run-saat 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.Her iki uyarı yöntem bir hata kodu, kaynak bileşeni, açıklama, Yardım dosyası ve Yardım bilgileri aynı parametreleri gerektirir.The SSIS Designer uses this information to display visual cues on the design surface.Tasarımcısı tarafından sağlanan bir görsel yardımlar Tasarımcı yüzey görevdeki yanında görünür bir ünlem işareti simgesi bulunur.Bu görsel bir işaret görevi yürütülmesine devam etmeden önce ek yapılandırma gerektiren, kullanıcıya bildirir.

Ünlem işareti simgesi de hata iletisi içeren bir araç ipucu görüntülenir.Hata iletisi, olay, Açıklama parametresinde görev tarafından sağlanır.Hata iletileri de görüntülenen Görev listesi pane of Business Intelligence Development Studio, kullanıcının tüm doğrulama hatalarını görüntülemek için merkezi bir konum sağlama.

Doğrulama-örnek

Aşağıdaki kod örneği, bir görevle gösteren bir UserName özellik. Bu özellik belirtilen doğrulama başarılı olması gerekli.Özellik ayarlanmamışsa, görevi bir hata deftere nakleder ve döndürüyor Failure() gelen DTSExecResult numaralandırma. The Validate yöntem 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

Görev persisting

Genellikle özel kalıcı bir görev için uygulamanız gerekmez.Bir nesnenin özelliklerini karmaşık veri türleri kullandığınızda özel kalıcılık gereklidir.Daha fazla bilgi için bkz:Özel nesneler için Tümleştirme Hizmetleri geliştirme.

Görevi çalıştırma

Bu bölüm, kullanmayı açıklamaktadır Execute devralınan ve görevler tarafından geçersiz kılındı yöntem. Bu bölüm, görev, yürütme sonuçlar hakkında bilgi sağlamak için çeşitli şekillerde de açıklanır.

Yöntem yürütmekk

Görevleri, içerdiği bir paket ne zaman çalıştırmak Integration Services Çalışma zamanı çağrıları kendi Execute yöntem. Görevleri, çekirdek iş mantığına ve işlevselliği, bu yöntem uygulamak ve iletileri arasında bir değer döndürülüyor deftere naklederek Yürütme sonuçlarını sağlar DTSExecResult numaralandırma ve özellik geçersiz kılma get ın ExecutionValue özellik.

The Task base class provides a default implementation of the Execute(Connections, VariableDispenser, IDTSComponentEvents, IDTSLogging, Object) yöntem. Özel görevleri kendi çalışma-tanımlamak için bu yöntem geçersiz saat işlevi.The TaskHost object wraps the task, isolating it from the run-saat engine and the other objects in the paket. Bu bir yalıtım nedeniyle görev paket ile ilgili olarak, yürütme sırasında konumunda, farkında ve yalnızca çalışma zamanı tarafından çağrıldığında çalıştırır.Bu mimariye görevleri yürütme sırasında paket değiştirdiğinizde oluşabilecek sorunları engeller.Görev, paketin üzerinden yalnızca olarak parametreleri için sağlanan nesneler diğer nesnelere erişim sağlanır Execute(Connections, VariableDispenser, IDTSComponentEvents, IDTSLogging, Object) yöntem. Bu parametreler olaylarını, girişleri olay günlüğüne Yaz, değişkenleri erişim görevleri izin koleksiyon ve hareketlere, veri kaynaklarına bağlantılar hala kararlılık ve güvenilirlik paket güvence altına almak gerekli olan yalıtım koruyarak listeleme.

Aşağıdaki tablo, görev için sağlanan parametreleri listeler Execute(Connections, VariableDispenser, IDTSComponentEvents, IDTSLogging, Object) yöntem.

Parameter

Açıklama

Connections

Topluluğunu içerir. ConnectionManager nesneleri görev için kullanılabilir.

VariableDispenser

Göreve değişkenleri içerir.Görevleri VariableDispenser aracılığıyla değişkenler; görevleri değişkenleri doğrudan kullanmayın.Değişken dağıtıcısı kilitler ve değişkenleri kilidini açar ve kilitlenmeleri önler veya üzerine yazar.

IDTSComponentEvents

Görevin çalışma-olaylarını tarafından yöntemleri içeren saat altyapısı.

IDTSLogging

Görev tarafından olay günlüğüne girdi yazmak için kullanılan yöntemler ve özellikler içerir.

Nesne

Kapsayıcı bir parçası olan işlem nesnesi varsa.Bu değer parametre olarak geçildi AcquireConnection(Object) yöntem bir ConnectionManager nesne.

Yürütme geribildirim sağlama

Görevleri, kod içinde kaydırma try/catch Çalışma zamanı alt yapısına yükseltilmiş gelen, özel durumları önlemek için engeller. Bu paket yürütme tamamlanır ve beklenmedik biçimde durdurmaz sağlar.Ancak, çalışma zamanı alt yapısı, görevin yürütülmesi sırasında oluşan hata koşullarını işleme için başka düzenekler sağlar.Hata deftere nakil ve uyarı iletilerini arasında bir değer döndüren, bunlar DTSExecResult iletileri döndüren, deftere nakil yapısı, DTSExecResult değer ve görev yürütmenin sonuçlarıyla ilgili bilgileri disclosing ExecutionValue() özellik.

The IDTSComponentEvents arabirim 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-saat engine. Her iki yöntem, hata kodu, kaynak bileşeni, açıklama, Yardım dosyasını ve Yardım bilgileri gibi parametreleri gerektirir.Görevin yapılandırmasına bağlı olarak, çalışma zamanı olayları ve kesme noktası yükseltme veya bilgileri olay günlüğüne yazılırken bu iletilere yanıt verir.

The TaskHost also provides the ExecutionValue() özellik that can be used to provide additional information about the sonuçlar of execution. Örneğin bir görevin parçası olarak satırları tablodan siler, kendi Execute yöntem olarak silinen satır sayısı döndürebilir ExecutionValue() özellik. Buna ek olarak, TaskHost sağlar ExecValueVariable() özellik. Bu özellik eşleme sağlar ExecutionValue() görevden herhangi bir değişken göreve görünür döndürdü. Belirtilen değişken, ardından görevler arasında öncelik kısıtlamaları'nı kurmak için kullanılabilir.

Yürütme örneği

Aşağıdaki kod örneği uygulaması gösterir Execute yöntem ve geçersiz kılınmış bir gösterir. ExecutionValue özellik. Görevi tarafından belirtilen dosyayı siler fileName Görevin özellik. Dosya yoksa veya varsa görev uyarı deftere nakleder fileName boş bir dize özellik. Görev döndüren bir Boolean bulunan değer ExecutionValue() Dosya silinmiş olup olmadığını gösteren özellik.

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
Integration Services icon (small) Tümleştirme Hizmetleri ile güncel kalın

Karşıdan yüklemeler, makaleleri, örnekler ve en son Microsoft video yanı sıra, seçili topluluğun çözümleri için ziyaret Integration Services sayfa MSDN veya TechNet:

Bu güncelleştirmelerin otomatik bildirim için kullanılabilir RSS akışlarına abone olmak sayfa.