Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure Data Factory'de SSIS Tümleştirme Çalışma Zamanı
Görevler, çalışma zamanı motorunda aşağıdaki nesne türlerine eklenebilir:
Bu sınıflar konteyner olarak kabul edilir ve hepsi bu Executables özelliği devralır. Konteynerler, konteynerin yürütülmesi sırasında çalışma zamanı tarafından işlenen yürütülebilir nesneler olan bir dizi görev içerebilir. Koleksiyondaki nesnelerin yürütülme sırası, konteynerlerdeki her görevdeki herhangi PrecedenceConstraint bir küme göre belirlenir. Öncelik kısıtlamaları, bir dosyanın başarısı, başarısızlığı veya tamamlanmasına Executable göre yürütme dallanmasını mümkün kılar.
Her konteynerin bireysel Executable nesneleri içeren bir Executables koleksiyonu vardır. Her yürütülebilir görev, yöntemi ve Validate yöntemi Execute devralır ve uygular. Bu iki yöntem, çalışma zamanı motoru tarafından her birini Executableişlemek için çağrılır.
Bir pakete görev eklemek için, mevcut bir koleksiyona sahip Executables bir konteyner gerekir. Çoğu zaman, koleksiyona ekleyeceğiniz görev bir paket olur. Yeni görev yürütülebilir dosyayı o konteyner için koleksiyona eklemek için, metodu Add çağırırsınız. Yöntemin tek bir parametresi, yani bir dizisi vardır ve bu parametre eklediğiniz görevin CLSID, PROGID, STOCK adını veya CreationName eklediğiniz görevi içerir.
Görev Adları
Bir görevi isim veya kimlik ile belirtebilseniz de, yöntemde en Add çok kullanılan parametre STOCK adı. STOCK takma adıyla tanımlanan bir yürütülebilir dosyaya bir görev eklemek için aşağıdaki sözdizimi kullanın:
Executable exec = package.Executables.Add("STOCK:BulkInsertTask");
Dim exec As Executable = package.Executables.Add("STOCK:BulkInsertTask")
Aşağıdaki liste, STOCK isiminden sonra kullanılan her görev için isimleri göstermektedir.
ActiveXScriptTask
BulkInsertTask
ExecuteProcessTask
ExecutePackageTask
Exec80PackageTask
FileSystemTask
FTPTask
MSMQTask
PipelineTask
ScriptTask
SendMailTask
SQLTask
TransferStoredProceduresGörev
TransferLoginsTask
TransferErrorMessagesGörev
TransferJobsGörev
TransferObjectsGörev
TransferDatabaseTask
WebServiceTask
WmiDataReaderTask
WmiEventWatcherTask
XMLTask
Daha açık bir sözdizimi tercih ediyorsanız veya eklemek istediğiniz görevin STOCK ismi yoksa, görevi uzun adıyla çalıştırılabilir dosyaya ekleyebilirsiniz. Bu sözdizimi için ayrıca görevin sürüm numarasını belirtmeniz gerekir.
Executable exec = package.Executables.Add(
"Microsoft.SqlServer.Dts.Tasks.ScriptTask.ScriptTask, " +
"Microsoft.SqlServer.ScriptTask, Version=10.0.000.0, " +
"Culture=neutral, PublicKeyToken=89845dcd8080cc91");
Dim exec As Executable = package.Executables.Add( _
"Microsoft.SqlServer.Dts.Tasks.ScriptTask.ScriptTask, " & _
"Microsoft.SqlServer.ScriptTask, Version=10.0.000.0, " & _
"Culture=neutral, PublicKeyToken=89845dcd8080cc91")
Görevin uzun adını, görev sürümünü belirtmenize gerek kalmadan, aşağıdaki örnekte gösterildiği gibi sınıfın AssemblyQualifiedName özelliğini kullanarak programatik olarak elde edebilirsiniz. Bu örnek Microsoft'a bir referans gerektirir. SqlServer.SQLTask assembly.
using Microsoft.SqlServer.Dts.Tasks.ExecuteSQLTask;
...
Executable exec = package.Executables.Add(
typeof(Microsoft.SqlServer.Dts.Tasks.ExecuteSQLTask.ExecuteSQLTask).AssemblyQualifiedName);
Imports Microsoft.SqlServer.Dts.Tasks.ExecuteSQLTask
...
Dim exec As Executable = package.Executables.Add( _
GetType(Microsoft.SqlServer.Dts.Tasks.ExecuteSQLTask.ExecuteSQLTask).AssemblyQualifiedName)
Aşağıdaki kod örneği, yeni bir paketten bir koleksiyon nasıl oluşturulacağını Executables ve ardından STOCK isimlerini kullanarak koleksiyona bir Dosya Sistemi görevi ve bir Toplu Ekleme görevi nasıl ekleneceğini gösterir. Bu örnek Microsoft'a bir referans gerektirir. SqlServer.FileSystemTask ve Microsoft. SqlServer.BulkInsertTask assemblies.
using System;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Tasks.FileSystemTask;
using Microsoft.SqlServer.Dts.Tasks.BulkInsertTask;
namespace Microsoft.SqlServer.Dts.Samples
{
class Program
{
static void Main(string[] args)
{
Package p = new Package();
// Add a File System task to the package.
Executable exec1 = p.Executables.Add("STOCK:FileSystemTask");
TaskHost thFileSystemTask = exec1 as TaskHost;
// Add a Bulk Insert task to the package.
Executable exec2 = p.Executables.Add("STOCK:BulkInsertTask");
TaskHost thBulkInsertTask = exec2 as TaskHost;
// Iterate through the package Executables collection.
Executables pExecs = p.Executables;
foreach (Executable pExec in pExecs)
{
TaskHost taskHost = (TaskHost)pExec;
Console.WriteLine("Type {0}", taskHost.InnerObject.ToString());
}
Console.Read();
}
}
}
Imports Microsoft.SqlServer.Dts.Runtime
Imports Microsoft.SqlServer.Dts.Tasks.FileSystemTask
Imports Microsoft.SqlServer.Dts.Tasks.BulkInsertTask
Module Module1
Sub Main()
Dim p As Package = New Package()
' Add a File System task to the package.
Dim exec1 As Executable = p.Executables.Add("STOCK:FileSystemTask")
Dim thFileSystemTask As TaskHost = CType(exec1, TaskHost)
' Add a Bulk Insert task to the package.
Dim exec2 As Executable = p.Executables.Add("STOCK:BulkInsertTask")
Dim thBulkInsertTask As TaskHost = CType(exec2, TaskHost)
' Iterate through the package Executables collection.
Dim pExecs As Executables = p.Executables
Dim pExec As Executable
For Each pExec In pExecs
Dim taskHost As TaskHost = CType(pExec, TaskHost)
Console.WriteLine("Type {0}", taskHost.InnerObject.ToString())
Next
Console.Read()
End Sub
End Module
Örnek Çıkış:
Type Microsoft.SqlServer.Dts.Tasks.FileSystemTask.FileSystemTask
Type Microsoft.SqlServer.Dts.Tasks.BulkInsertTask.BulkInsertTask
TaskHost Konteyneri
Sınıf, TaskHost grafiksel kullanıcı arayüzünde görünmeyen, ancak programlamada çok önemli olan bir konteynerdir. Bu sınıf her görev için bir paket gibi. Metodun AddExecutable nesne olarak kullanılmasıyla pakete eklenen görevler, nesne TaskHost olarak kast edilebilir. Bir görev bir TaskHostolarak kastedildiğinde, görev üzerinde ek özellikler ve yöntemler kullanabilirsiniz. Ayrıca, görevin kendisine InnerObjectTaskHost. İhtiyaçlarınıza bağlı olarak, görevi bir nesne olarak TaskHost tutmaya karar verebilirsiniz ki koleksiyon aracılığıyla görevin Properties özelliklerini kullanabilesiniz. Kullanmanın Properties avantajı, daha genel kod yazabilmenizdir. Bir görev için çok spesifik bir koda ihtiyacınız varsa, görevi uygun nesneye göndermelisiniz.
Aşağıdaki kod örneği, bir BulkInsertTaskBulkInsertTask nesneye , içeren bir , thBulkInsertTask'ın nasıl gönderileceğini TaskHostgösterir.
BulkInsertTask myTask = thBulkInsertTask.InnerObject as BulkInsertTask;
Dim myTask As BulkInsertTask = CType(thBulkInsertTask.InnerObject, BulkInsertTask)
Aşağıdaki kod örneği, çalıştırılabilir dosyanın bir 'a TaskHostnasıl döküleceğini ve ardından InnerObject bu özelliği kullanarak hangi türde yürütülebilir bilgisayarda bulunduğunu belirlemeyi gösterir.
using System;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Tasks.FileSystemTask;
using Microsoft.SqlServer.Dts.Tasks.BulkInsertTask;
namespace Microsoft.SqlServer.Dts.Samples
{
class Program
{
static void Main(string[] args)
{
Package p = new Package();
// Add a File System task to the package.
Executable exec1 = p.Executables.Add("STOCK:FileSystemTask");
TaskHost thFileSystemTask1 = exec1 as TaskHost;
// Add a Bulk Insert task to the package.
Executable exec2 = p.Executables.Add("STOCK:BulkInsertTask");
TaskHost thFileSystemTask2 = exec2 as TaskHost;
// Iterate through the package Executables collection.
Executables pExecs = p.Executables;
foreach (Executable pExec in pExecs)
{
TaskHost taskHost = (TaskHost)pExec;
if (taskHost.InnerObject is Microsoft.SqlServer.Dts.Tasks.FileSystemTask.FileSystemTask)
{
// Do work with FileSystemTask here.
Console.WriteLine("Found task of type {0}", taskHost.InnerObject.ToString());
}
else if (taskHost.InnerObject is Microsoft.SqlServer.Dts.Tasks.BulkInsertTask.BulkInsertTask)
{
// Do work with BulkInsertTask here.
Console.WriteLine("Found task of type {0}", taskHost.InnerObject.ToString());
}
// Add additional statements to check InnerObject, if desired.
}
Console.Read();
}
}
}
Imports Microsoft.SqlServer.Dts.Runtime
Imports Microsoft.SqlServer.Dts.Tasks.FileSystemTask
Imports Microsoft.SqlServer.Dts.Tasks.BulkInsertTask
Module Module1
Sub Main()
Dim p As Package = New Package()
' Add a File System task to the package.
Dim exec1 As Executable = p.Executables.Add("STOCK:FileSystemTask")
Dim thFileSystemTask1 As TaskHost = CType(exec1, TaskHost)
' Add a Bulk Insert task to the package.
Dim exec2 As Executable = p.Executables.Add("STOCK:BulkInsertTask")
Dim thFileSystemTask2 As TaskHost = CType(exec2, TaskHost)
' Iterate through the package Executables collection.
Dim pExecs As Executables = p.Executables
Dim pExec As Executable
For Each pExec In pExecs
Dim taskHost As TaskHost = CType(pExec, TaskHost)
If TypeOf taskHost.InnerObject Is Microsoft.SqlServer.Dts.Tasks.FileSystemTask.FileSystemTask Then
' Do work with FileSystemTask here.
Console.WriteLine("Found task of type {0}", taskHost.InnerObject.ToString())
ElseIf TypeOf taskHost.InnerObject Is Microsoft.SqlServer.Dts.Tasks.BulkInsertTask.BulkInsertTask Then
' Do work with BulkInsertTask here.
Console.WriteLine("Found task of type {0}", taskHost.InnerObject.ToString())
End If
' Add additional statements to check InnerObject, if desired.
Next
Console.Read()
End Sub
End Module
Örnek Çıkış:
Found task of type Microsoft.SqlServer.Dts.Tasks.FileSystemTask.FileSystemTask
Found task of type Microsoft.SqlServer.Dts.Tasks.BulkInsertTask.BulkInsertTask
Bu Add ifade, yeni oluşturulan Executable nesneden bir nesneye TaskHost gönderilen bir çalıştırılabilir dosyayı döndürür.
Yeni nesnede özellikler ayarlamak veya metot çağırmak için iki seçeneğiniz vardır:
Koleksiyonunu kullanın PropertiesTaskHost. Örneğin, nesneden bir özellik elde etmek için
th.Properties["propertyname"].GetValue(th)). Bir özellik ayarlamak içinth.Properties["propertyname"].SetValue(th, <value>);.Görev sınıfına at InnerObjectTaskHost . Örneğin, Bulk Insert görevini bir pakete bir olarak Executable eklendikten sonra a'ya BulkInsertTask dökmek ve ardından bir TaskHost'a dökmek için , kullanın
BulkInsertTask myTask = th.InnerObject as BulkInsertTask;.
Kodda sınıfı TaskHost kullanmak, göreve özgü sınıfa dökmek yerine aşağıdaki avantajlara sahiptir:
Sağlayıcı, TaskHostProperties kodda montaja referans gerektirmez.
Herhangi bir görev için çalışan genel rutinler kodlayabilirsiniz, çünkü derleme sırasında görevin adını bilmeniz gerekmez. Bu tür genel rutinler, görevin adını metoda aktardığınız ve metot kodunun tüm görevler için çalıştığı yöntemleri içerir. Bu, test kodu yazmak için iyi bir yöntemdir.
Göreve TaskHost özgü sınıfa döküm yapmak aşağıdaki avantajlara sahiptir:
Visual Studio projesi size ifade tamamlama (IntelliSense) sunar.
Kod daha hızlı çalışabilir.
Göreve özgü nesneler, erken bağlama ve sonuç olarak optimizasyonları mümkün kılar. Erken ve geç ciltleme hakkında daha fazla bilgi için, Visual Basic Language Concepts bölümündeki "Erken ve Geç Bağlama" konusuna bakınız.
Aşağıdaki kod örneği, görev kodunun yeniden kullanılması kavramını genişletir. Görevleri kendi sınıf eşdeğerlerine dökmek yerine, kod örneği çalıştırılabilir dosyanın nasıl TaskHostbir 'a döküleceğini gösterir ve ardından tüm görevlere karşı genel kod yazmak için kullanılır Properties .
using System;
using Microsoft.SqlServer.Dts.Runtime;
namespace Microsoft.SqlServer.Dts.Samples
{
class Program
{
static void Main(string[] args)
{
Package package = new Package();
string[] tasks = { "STOCK:SQLTask", "STOCK:ScriptTask",
"STOCK:ExecuteProcessTask", "STOCK:PipelineTask",
"STOCK:FTPTask", "STOCK:SendMailTask", "STOCK:MSMQTask" };
foreach (string s in tasks)
{
TaskHost taskhost = package.Executables.Add(s) as TaskHost;
DtsProperties props = taskhost.Properties;
Console.WriteLine("Enumerating properties on " + taskhost.Name);
Console.WriteLine(" TaskHost.InnerObject is " + taskhost.InnerObject.ToString());
Console.WriteLine();
foreach (DtsProperty prop in props)
{
Console.WriteLine("Properties for " + prop.Name);
Console.WriteLine("Name : " + prop.Name);
Console.WriteLine("Type : " + prop.Type.ToString());
Console.WriteLine("Readable : " + prop.Get.ToString());
Console.WriteLine("Writable : " + prop.Set.ToString());
Console.WriteLine();
}
}
Console.Read();
}
}
}
Imports Microsoft.SqlServer.Dts.Runtime
Module Module1
Sub Main()
Dim package As Package = New Package()
Dim tasks() As String = New String() {"STOCK:SQLTask", "STOCK:ScriptTask", _
"STOCK:ExecuteProcessTask", "STOCK:PipelineTask", _
"STOCK:FTPTask", "STOCK:SendMailTask", "STOCK:MSMQTask"}
For Each s As String In tasks
Dim taskhost As TaskHost = CType(package.Executables.Add(s), TaskHost)
Dim props As DtsProperties = taskhost.Properties
Console.WriteLine("Enumerating properties on " & taskhost.Name)
Console.WriteLine(" TaskHost.InnerObject is " & taskhost.InnerObject.ToString())
Console.WriteLine()
For Each prop As DtsProperty In props
Console.WriteLine("Properties for " + prop.Name)
Console.WriteLine(" Name : " + prop.Name)
Console.WriteLine(" Type : " + prop.Type.ToString())
Console.WriteLine(" Readable : " + prop.Get.ToString())
Console.WriteLine(" Writable : " + prop.Set.ToString())
Console.WriteLine()
Next
Next
Console.Read()
End Sub
End Module