Özel görev kodlama
Dan devralan bir sınıf oluşturduktan sonra Tasktemel sınıf ve uygulanan DtsTaskAttributeözniteliği sınıfa uygulaması özellikleri ve yöntemleri, özel işlevsellik sağlamak için temel sınıf geçersiz kılmalısınız.
Görev yapılandırma
Görev doğrulama
Ne zaman tasarlamakta bir Integration Servicespaketi doğrulama her görevin ayarlarını doğrulamak için kullanabileceğiniz böylece onlar, çalışma anında yalnızca tüm hataları bulma yerine ayarlanan en kısa sürede yanlış ya da uygunsuz ayarlarını yakalamak için. Görev geçersiz ayarları ya da başarıyla çalışmasını engeller bağlantıları içerip içermediğini belirlemek için doğrulama amacı budur. Bu paketin ilk onların kaçak çalışan iyi bir şansa sahip görevleri içerir emin olmayı sağlar.
Doğrulama kullanarak uygulayabileceğiniz Validateyönteminde özel kod. Çalışma zamanı altyapısı göreve çağırarak doğrulama Validateyöntemi görevde. O vermek sen-e doğru bir görevi başarılı ya da başarısız doğrulama ölçütlerini tanımlamak ve çalışma zamanı altyapısı bu değerlendirme sonucunu bildirmek için görev geliştirici sorumludur.
Görev soyut temel sınıfı
TaskSoyut temel sınıfı sağlar Validatedoğrulama ölçütlerini tanımlamak için görev kılan yöntemi. SSISTasarımcısı otomatik olarak aramaları Validateyöntemi birden çok kez sırasında paket tasarımı ve görev yapılandırmasıyla ilgili sorunları tanımlamak için uyarı veya hata oluştuğunda kullanıcıya görsel yardımlar sağlar. Görevleri arasında bir değer döndüren tarafından doğrulama sonuçları sağlamak DTSExecResultnumaralandırma ve uyarı ve hata olaylarını yükselterek. Bu olaylar kullanıcıya görüntülenen bilgi içeren SSIStasarımcı.
Doğrulama için bazı örnekler izleyin:
Bağlantı Yöneticisi, belirli dosya adı doğrular.
Bağlantı Yöneticisi, giriş türü xml dosyası gibi beklenen türü olduğunu doğrular.
Veritabanı giriş bekliyor görev, o olmayan veritabanı bağlantı verileri alamıyor doğrular.
Bir görevin özelliklerini hiçbiri diğer özellikleri aynı görev üzerinde çeliştiği garanti eder.
Bir görevi, gerekli tüm yürütülmesi sırasında görev tarafından kullanılan kaynaklar kullanılabilir garanti eder.
Performansı ne doğrulanır ve ne değildir belirlenmesinde dikkate alınacak bir şeydir. Örneğin, bir görev girişi düşük bant genişliği ya da yoğun trafiği olan bir ağ bir bağlantı olabilir. Doğrulama kaynağın kullanılabilir olduğunu doğrulamak karar işlem birkaç saniye sürebilir. Bir gidiş yüksek talep olan bir sunucuya neden olabilir başka bir doğrulama ve doğrulama yordamı yavaş olabilir. Olmasına rağmen birçok özellikleri ve doğrulanabilir ayarları, her şey doğrulanması.
- Kod Validateyöntemi olarak da adlandırılır TaskHostgörevi çalıştırmadan önce ve TaskHostdoğrulama başarısız olursa yürütme iptal eder.
Doğrulama sırasında kullanıcı arabirimi hakkında önemli noktalar
Taskİçeren bir IDTSComponentEventsarabirimi parametre olarak Validateyöntemi. IDTSComponentEventsArabirimini içeren görev tarafından çalışma zamanı altyapısı Olayları artırmak denir yöntemleri. FireWarningVe FireErrordoğrulama sırasında bir uyarı veya hata durumu ortaya çıktığında yöntemleri olarak adlandırılan. İki uyarı yöntemi, bir hata kodu, kaynak bileşeni, açıklama, Yardım dosyası ve Yardım içeriği bilgileri dahil aynı parametreleri gerektirir. SSISTasarımcısı, Tasarım yüzeyi üzerinde görsel ipuçları görüntülemek için bu bilgiyi kullanır. Tasarımcısı tarafından sağlanan görsel yardımlar yanında görev tasarımcı yüzey üzerinde görünen ünlem simge içerir. Bu görsel işaret kullanıcıya yürütülmesine devam etmeden önce görev ek yapılandırma gerekir sinyalleri.
Ünlem de hata iletisi içeren bir araç ipucu görüntülenir. Hata iletisi, olay açıklama parametresi görevi tarafından sağlanır. Hata iletileri de görüntülenir Task List bölmesinde SQL Server Veri Akışı Araçları (SSDT), kullanıcının tüm doğrulama hatalarını görüntülemek için merkezi bir yer sağlayarak.
Doğrulama örnek
Aşağıdaki kod örneği olan bir görev gösterir bir UserNameözellik. Bu özellik belirtilen doğrulama başarılı olmak için gerektiği gibi. Özelliği ayarlı değilse, görev hata mesajları ve döner Failuredan DTSExecResultnumaralandırma. ValidateYöntemi bir try/catch bloğu içinde paketlenir ve bir özel durum oluşursa, doğrulama başarısız olur.
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;
}
}
}
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
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
Normalde bir görev için özel kalıcılık uygulamak gerekmez. Özel kalıcılık, bir nesnenin özelliklerini karmaşık veri türlerini kullandığınızda gereklidir. Daha fazla bilgi için, bkz. Tümleştirme Hizmetleri özel nesne geliştirme.
Görev yürütme
Bu bölüm nasıl kullanılacağını açıklar Executemiras ve görevlere göre geçersiz yöntem. Bu bölümde ayrıca görev yürütme sonuçlarını hakkında bilgi veren çeşitli yolları açıklanmaktadır.
Execute yöntemi
Bir pakette yer alan görevleri çalıştırmak zaman Integration Servicesçalışma çağrıları kendi Executeyöntemi. Görevleri kendi çekirdek iş mantığı ve işlevsellik bu yöntemi uygulamak ve bir değer döndüren, mesaj tarafından Yürütme sonuçlarını sağlamak DTSExecResultnumaralandırma ve özellik geçersiz kılma get, ExecutionValueözellik.
TaskTemel sınıf sağlayan bir varsayılan uygulanması Executeyöntemi. Özel görevleri çalıştırma işlevlerini tanımlamak için bu yöntemi geçersiz kılar. TaskHostNesne sarar çalışma zamanı altyapısı ve diğer paket nesneleri yalıtma görev. Bu izolasyon nedeniyle görevi, yürütme sırasına göre pakete konumunda habersiz ve yalnızca çalışma zamanı tarafından çağrıldığında çalışır. Bu mimari görevleri paketi yürütme sırasında değiştirdiğinizde oluşabilecek sorunları önler. Görev paketi yalnızca kendisine parametre olarak verilen nesneleri diğer nesnelere erişim sağlanan Executeyöntemi. Bu parametreler olaylarını, girişleri olay günlüğüne yazma, değişkenleri koleksiyonu erişmek ve işlemler, veri kaynaklarına bağlantılar hala sağlamlık ve güvenilirlik paketi garanti etmek gerekli olan yalıtım korurken askere görevleri sağlar.
Aşağıdaki tabloda görev için sağlanan parametreleri listeler Executeyöntemi.
Parametre |
Açıklama |
---|---|
Fotoğraflardan oluşan ConnectionManagernesneleri göreve kullanılabilir. |
|
Görev için kullanılabilir değişkenleri içerir. Görevleri değişkenleri aracılığıyla VariableDispenser kullanın; görevleri değişkenleri doğrudan kullanmayın. Değişken dispanser kilitler ve değişkenleri kilidini ve kilitlenmeleri veya engeller üzerine yazar. |
|
Çalışma zamanı altyapısı olaylarını görev tarafından adlandırılan yöntemler içerir. |
|
Olay günlüğü girişleri yazmak için görev tarafından kullanılan yöntemler ve özellikler içerir. |
|
Nesne |
Eğer herhangi bir kapsayıcı bir parçası olan işlem nesnesi içerir. Bu değer parametre olarak geçirilen AcquireConnectionyöntemi bir ConnectionManagernesnesini. |
Yürütme geribildirim sağlama
Görevleri tamamlamayı kendi kodu try/catchBlok çalışma zamanı altyapısı için yükseltilmiş olarak gelen özel durumları önlemek için. Bu paketi yürütme tamamlandığında ve beklenmedik şekilde durmuyor sağlar. Ancak çalışma zamanı altyapısı, görev yürütme sırasında oluşabilecek hata koşullarını işleme diğer mekanizmalar sağlar. Bu nakil hata ve uyarı mesajları, bir değer döndüren dahil DTSExecResultyapısı, döndürme, mesaj DTSExecResultdeğer ve görev yürütme sonuçlarını hakkında bilgi açıklamadan ExecutionValueözellik.
IDTSComponentEventsArabirimi içerir FireWarningve FireErrorgörev sonrası hata ve uyarı mesajları çalışma zamanı altyapısı tarafından çağrılabilecek yöntemleri. İki yöntem, hata kodu, kaynak bileşeni, açıklama, Yardım dosyası ve Yardım içeriği bilgileri gibi parametreleri gerektirir. Görev yapılandırmasına bağlı olarak, çalışma zamanı olayları ve kesme noktalarını veya bilgileri olay günlüğüne yazılırken bu iletilere yanıt verir.
TaskHostDa sağlar ExecutionValueYürütme sonuçlarını hakkında ek bilgi sağlamak için kullanılan özellik. Örneğin, bir görev satırları tablodan siler bir parçası olarak, onun Executeyöntemi, o dönüş değeri olarak silinen satır sayısını ExecutionValueözellik. Ayrıca, TaskHostsağlayan ExecValueVariableözellik. Bu özellik göster sağlar ExecutionValuegörevden göreve görünür herhangi bir değişken döndü. Belirtilen değişken daha sonra önceliği sınırlamaları görevler arasında kurmak için kullanılabilir.
Yürütme örnek
Aşağıdaki kod örneği gösterilmiştir Executeyöntemi geçersiz kılınmış bir gösterir ExecutionValueözellik. Görev tarafından belirtilen dosyayı siler fileNamegörev özelliği. Dosya yoksa, ya da eğer bir uyarı görevi mesaj fileNameözellik boş bir dize olur. Görev verir bir Booleandeğer içinde ExecutionValueDosya 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; }
}
}
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
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
|