Aracılığıyla paylaş


Özel görev kodlama

Dan devralan bir sınıf oluşturduktan sonra Task taban sınıfı ve uygulanan DtsTaskAttribute öznitelik sınıfa uygulaması özellikleri ve özel bir işlevi bilgisayarınızın. sağlamak için temel sınıfı yöntemleri kılmalıdır

Görev yapılandırma

Görev doğrulama

Ne saat tasarlama bir Integration Services paket kullanarak doğrulama doğrulamak için kümeböylece yanlış veya uygunsuz catch her görevde tings kümetings oldukları gibi küme, çalışma zamanı sırasında yalnızca tüm hataları bulma yerine.Görev ayarları geçersiz veya başarılı bir şekilde çalışmasını engelleyecek olan bağlantıları içerip içermediğini belirlemek için doğrulama amacı budur.Bu paket üzerinde bunların ilk çalıştırmada çalıştırma olasılığı olan görevleri içerdiğinden emin kılar.

Doğrulama kullanarak uygulama Validate yöntem özel kod.Run -saat altyapısı doğrulama göreve çağırarak Validate yöntem görev.Size bir görev başarılı veya başarısız doğrulama ölçütlerini tanımlamak ve çalışma - bildirmek için görev geliştirici sorumluluğundadırsaat altyapısı bu değerlendirme sonucu.

Görev soyut temel sınıfı

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

Doğrulama için Aşağıda bazı örnekler verilmektedir:

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

  • Bağlantı Yöneticisi, girdi beklenen türü, bir xml dosyası gibi olduğunu doğrular.

  • Veritabanı giriş bekliyor bir görev onu olmayan veritabanı bağlantı verileri alamıyor doğrular.

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

  • Görev yürütme sırasında görev tarafından kullanılan kaynakları gerekli tüm garanti saat kullanılabilir.

Performans ne doğrulanır ve ne olduğunu belirlerken göz önüne almanız gereken bir şeydir.Örneğin, bir göreve giriş, düşük bant genişliği veya yoğun trafiği olan bir ağ bağlantı olabilir.Doğrulama, doğrulamak karar verirseniz, birkaç saniye sürebilir kaynak kullanılabilir.Eğer yüksek talep bir sunucu için başka bir doğrulama neden olabilir ve doğrulama yordamı yavaş olabilir.Olmakla birlikte birçok özellikleri ve doğrulanabilir ayarları, her şeyin doğrulanması gerekir.

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

Doğrulama sırasında kullanıcı arabirimi hakkında önemli noktalar

The Task includes an IDTSComponentEvents interface as a parameter to the Validate method.The IDTSComponentEvents interface contains the methods that are called by the task in order to raise events to the run-time engine.The FireWarning and FireError 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 içeriği bilgileri dahil aynı parametreleri gerektirir.The SSIS Designer uses this information to display visual cues on the design surface.Tasarımcısı tarafından sağlanan görsel yardımlar yanında görev Tasarımcı yüzey üzerinde görünen bir ünlem simgesini içerir.Bu görsel bir işaret görevi yürütme devam etmeden önce ek yapılandırma gerektirir kullanıcıya bildirir.

Ünlem işareti simgesi de bir hata iletisi içeren bir araç ipucu görüntüler.Hata iletisi, olay Açıklama parametresi görevi tarafından sağlanır.Hata iletileri de görüntülenir Task List bölmesi, Business Intelligence Development Studio, kullanıcı ile görüntülemek için merkezi bir konum sağlartüm doğrulama hatalarını.

Doğrulama örnek

Aşağıdaki kod örneği, bir görevle gösterir bir UserName özellik.Bu özellik belirtilen doğrulama başarılı olması gerekli.özellik ise küme, görevi bir hata deftere nakleder ve döner Failure dan DTSExecResult numaralandırma.The Validate method is wrapped in a try/catch block, 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örevi kalıcı yapma

Normalde, bir görev için özel Kalıcılık uygulamak zorunda değildir.Özel Kalıcılık, nesnenin özelliklerini karmaşık veri türlerini kullandığınızda gereklidir.Daha fazla bilgi için bkz: Tümleştirme Hizmetleri için Özel Nesneler Geliştirme.

Görev yürütme

Bu bölüm nasıl kullanılacağını açıklar Execute yöntem miras ve geçersiz kılınmış olarak görevler.Bu da çeşitli yolları hakkında bilgi vererek, balıkta sonuçlar görev yürütme.

Yöntem yürütme

İçerdiği görevler bir paket çalıştırılmasına Integration Services çalışma çağrıları, Execute yöntem.Görevleri bu yöntem, kendi Çekirdek iş mantığı ve işlevselliğini uygulamak ve yürütme sonuçlar arasında bir değer döndüren, iletileri göndererek sağlamak DTSExecResult , numaralandırma ve özellik geçersiz kılma get , ExecutionValue özelliği.

The Task base class provides a default implementation of the Execute method.Özel görevler kendi çalışma - tanımlamak için bu yöntem geçersizsaat işlevi.The TaskHost object wraps the task, isolating it from the run-time engine and the other objects in the package.Bu yalıtım nedeniyle görev paket ile ilgili kendi yürütme sırasında konumunun farkında değildir ve yalnızca çalışma zamanı tarafından çağrıldığında çalıştırır.Bu mimari görevleri paket yürütme sırasında değiştirdiğinizde oluşabilecek sorunları önler.Görev diğer nesnelere erişim sağlanmıştır paket yalnızca kendisine parametre olarak sağlanan nesneler aracılığıyla Execute yöntem.Bu parametreler olaylarını, olay günlüğü girdileri yazma, değişkenleri erişmek görevleri izin koleksiyonve kararlılığını ve güvenilirliğini paket güvence altına almak gerekli olan yalıtım hala korurken, işlemlerde veri kaynaklarına bağlantıları listeleme.

Aşağıdaki tablo görev için sağlanan parametreleri listeler Execute yöntem.

Parameter

Açıklama

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

İçeren bir koleksiyon , ConnectionManager nesneleri kullanılabilir görev.

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

Görev için kullanılabilir değişkenleri içerir.Görevleri VariableDispenser aracılığıyla değişkenleri kullanın; 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 veya engeller üzerine yazar.

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

Run-olaylarını görev tarafından çağrılan yöntemleri içerensaat motoru.

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

Olay günlüğü girdilerini yazmak için görev tarafından kullanılan yöntemler ve özellikler içerir.

Nesne

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

Yürütme geribildirim sağlama

Görevleri kendi sarma try/catch run - için artırılmasını gelen özel durumları önlemek için bloklarsaat motoru.Bu paket yürütme tamamlandığında ve beklenmedik biçimde yanıt vermemeye sağlar.Ancak, çalışma -saat motoru diğer bir görevin yürütülmesi sırasında oluşabilecek hata koşullarını işleme mekanizmaları sağlar.Deftere nakil hata ve uyarı iletilerini arasında bir değer döndüren, bunlar DTSExecResult yapısı, iletileri döndüren, deftere nakil DTSExecResult ve değer hakkında bilgi vermeye ikna sonuçlar görev yürütme ExecutionValue özellik.

The IDTSComponentEvents interface contains the FireWarning and FireError methods, which can be called by the task to post error and warning messages to the run-time engine.Her iki yöntem de hata kodu Kaynak bileşeni, açıklama, Yardım dosyası ve Yardım içeriği bilgileri gibi parametreleri gerektirir.Bağlı yapılandırma görevi, olayları ve kesme noktalarını yükseltme ya da bilgi için olay günlüğüne yazma çalışma zamanı bu iletilere yanıt.

The TaskHost also provides the ExecutionValue property that can be used to provide additional information about the results of execution.Örneğin, bir görev satırları siler, bir tablo bir parçası olarak kendi Execute yöntem, onu dönüş değeri olarak silinen satır sayısını ExecutionValue özellik.Buna ek olarak, TaskHost sağlayan ExecValueVariable özellik.Bu özellik eşleme sağlar ExecutionValue tarafından görülebilen herhangi bir değişken için görevden dönengörev. Belirtilen değişken daha sonra görevler arasında öncelik kısıtlamaları kurmak için kullanılabilir.

Yürütme örnek

Aşağıdaki kod örneği uygulaması gösterilmiştir Execute yöntem geçersiz kılınmış bir gösterir ve ExecutionValue özellik.Görev tarafından belirtilen dosya siler fileName özellik, görev.Dosya yoksa veya bir uyarı görevi postaları fileName özellik olan boş bir dize.Görev verir bir Boolean , 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 simgesi (küçük)Integration Services ile güncel kalın

En son karşıdan yüklemeler, makaleler, örnekler ve seçilen topluluk çözümleri yanı sıra Microsoft videolar için ziyaret Integration Services sayfa msdn veya TechNet:

Bu güncelleştirmelerle ilgili otomatik bildirim almak için, sayfadaki RSS akışlarına abone olun.