Program Aracılığıyla Yerel Paket Yükleme ve Çalıştırma

Şunlar için geçerlidir:SQL Server Azure Data Factory'de SSIS Tümleştirme Çalışma Zamanı

Entegrasyon Hizmetleri paketlerini gerektiğinde veya önceden belirlenmiş zamanlarda, Çalıştırma Paketleri bölümünde tanımlanan yöntemleri kullanarak çalıştırabilirsiniz. Ancak, sadece birkaç satır kodla, Windows Forms uygulaması, konsol uygulaması, ASP.NET web formu veya web servisi veya Windows servisi gibi özel bir uygulamadan da bir paket çalıştırabilirsiniz.

Bu konu şunları tartışıyor:

  • Bir paketi programlı olarak yükleme

  • Bir paketi programlı olarak çalıştırmak

Bu konuda paketleri yüklemek ve çalıştırmak için kullanılan tüm yöntemler Microsoft'a referans gerektirir. SqlServer.ManagedDTS assembly. Yeni bir projede referans eklendikten sonra, isim alanını Microsoft.SqlServer.Dts.Runtimeusing veya Imports ifadesi ile içe aktarın.

Bir Paketi Programatik Olarak Yükleme

Yerel bilgisayarda programatik olarak bir paket yüklemek için, paket yerel veya uzaktan mı depolanıyor olsun, aşağıdaki yöntemlerden birini çağırın:

Depolama Konumu Çağırma Yöntemi
Dosya LoadPackage
SSIS Paket Mağazası LoadFromDtsServer
SQL Server LoadFromSqlServer

Important

SSIS Paket Mağazası ile çalışma sınıfının yöntemleri Application yalnızca ".", localhost veya yerel sunucu için sunucu adını destekler. "(local)" kullanabilirsiniz.

Bir Paketi Programatik Olarak Çalıştırmak

Yerel bilgisayarda paket çalıştıran yönetilen kodda özel bir uygulama geliştirmek için aşağıdaki yaklaşım gereklidir. Burada özetlenen adımlar, aşağıdaki model konsol uygulamasında gösterilmiştir.

Yerel bilgisayarda programlı olarak bir paket çalıştırmak

  1. Visual Studio geliştirme ortamını başlatın ve tercih ettiğiniz geliştirme dilinde yeni bir uygulama oluşturun. Bu örnekte bir konsol uygulaması kullanılır; ancak bir Windows Forms uygulamasından, ASP.NET web formundan veya web servisinden veya Windows servisinden bir paket çalıştırabilirsiniz.

  2. Project menüsünde Add Reference (Referans Ekle) tuşuna tıklayın veMicrosoft.SqlServer.ManagedDTS.dlliçin bir referans ekleyin. Tamam'a tıklayın.

  3. Microsoft'u içe aktarmak için Visual Basic Imports ifadesini veya C# using ifadesini kullanın. SqlServer.Dts.Runtime namespace.

  4. Ana rutine aşağıdaki kodu ekleyin. Tamamlanmış konsol uygulaması aşağıdaki örnek gibi görünmelidir.

    Note

    Örnek kod, dosya sisteminden paketin LoadPackage bu yöntemle yüklendiğini gösterir. Ancak, paketi MSDB veritabanından da metodu LoadFromSqlServer çağırarak veya Integration Services paket mağazasından metodu LoadFromDtsServer çağırarak yükleyebilirsiniz.

  5. Projeyi çalıştırın. Örnek kodu, SQL Server örnekleriyle birlikte kurulu CalculatedColumns örnek paketini çalıştırır. Paket yürütme sonucu konsol penceresinde görüntülenir.

Örnek Kod

Imports Microsoft.SqlServer.Dts.Runtime  
  
Module Module1  
  
  Sub Main()  
  
    Dim pkgLocation As String  
    Dim pkg As New Package  
    Dim app As New Application  
    Dim pkgResults As DTSExecResult  
  
    pkgLocation = _  
      "C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" & _  
      "\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx"  
    pkg = app.LoadPackage(pkgLocation, Nothing)  
    pkgResults = pkg.Execute()  
  
    Console.WriteLine(pkgResults.ToString())  
    Console.ReadKey()  
  
  End Sub  
  
End Module  
using System;  
using Microsoft.SqlServer.Dts.Runtime;  
  
namespace RunFromClientAppCS  
{  
  class Program  
  {  
    static void Main(string[] args)  
    {  
      string pkgLocation;  
      Package pkg;  
      Application app;  
      DTSExecResult pkgResults;  
  
      pkgLocation =  
        @"C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" +  
        @"\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx";  
      app = new Application();  
      pkg = app.LoadPackage(pkgLocation, null);  
      pkgResults = pkg.Execute();  
  
      Console.WriteLine(pkgResults.ToString());  
      Console.ReadKey();  
    }  
  }  
}  

Bir Dosyadan Olayları Yakalamak

Önceki örnekte gösterildiği gibi bir paketi programlı olarak çalıştırırken, paket çalışırken ortaya çıkan hataları ve diğer olayları da yakalamak isteyebilirsiniz. Bunu, sınıftan DefaultEvents miras alan bir sınıf ekleyerek ve paketi yüklerken o sınıfa bir referans vererek yapabilirsiniz. Aşağıdaki örnek sadece olayı OnError kaydetmesine rağmen, sınıfın DefaultEvents yakalamanıza izin verdiği birçok başka olay da var.

Yerel bilgisayarda programlı olarak bir paket çalıştırmak ve paket olaylarını yakalamak

  1. Bu örnek için bir proje oluşturmak üzere yukarıdaki örnekteki adımları izleyin.

  2. Ana rutine aşağıdaki kodu ekleyin. Tamamlanmış konsol uygulaması aşağıdaki örnek gibi görünmelidir.

  3. Projeyi çalıştırın. Örnek kodu, SQL Server örnekleriyle birlikte kurulu CalculatedColumns örnek paketini çalıştırır. Paket yürütme sonucu konsol penceresinde ve ortaya çıkan hatalarla birlikte gösterilir.

Örnek Kod

Imports Microsoft.SqlServer.Dts.Runtime  
  
Module Module1  
  
  Sub Main()  
  
    Dim pkgLocation As String  
    Dim pkg As New Package  
    Dim app As New Application  
    Dim pkgResults As DTSExecResult  
  
    Dim eventListener As New EventListener()  
  
    pkgLocation = _  
      "C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" & _  
      "\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx"  
    pkg = app.LoadPackage(pkgLocation, eventListener)  
    pkgResults = pkg.Execute(Nothing, Nothing, eventListener, Nothing, Nothing)  
  
    Console.WriteLine(pkgResults.ToString())  
    Console.ReadKey()  
  
  End Sub  
  
End Module  
  
Class EventListener  
  Inherits DefaultEvents  
  
  Public Overrides Function OnError(ByVal source As Microsoft.SqlServer.Dts.Runtime.DtsObject, _  
    ByVal errorCode As Integer, ByVal subComponent As String, ByVal description As String, _  
    ByVal helpFile As String, ByVal helpContext As Integer, _  
    ByVal idofInterfaceWithError As String) As Boolean  
  
    ' Add application-specific diagnostics here.  
    Console.WriteLine("Error in {0}/{1} : {2}", source, subComponent, description)  
    Return False  
  
  End Function  
  
End Class  
using System;  
using Microsoft.SqlServer.Dts.Runtime;  
  
namespace RunFromClientAppWithEventsCS  
{  
  class MyEventListener : DefaultEvents  
  {  
    public override bool OnError(DtsObject source, int errorCode, string subComponent,   
      string description, string helpFile, int helpContext, string idofInterfaceWithError)  
    {  
      // Add application-specific diagnostics here.  
      Console.WriteLine("Error in {0}/{1} : {2}", source, subComponent, description);  
      return false;  
    }  
  }  
  class Program  
  {  
    static void Main(string[] args)  
    {  
      string pkgLocation;  
      Package pkg;  
      Application app;  
      DTSExecResult pkgResults;  
  
      MyEventListener eventListener = new MyEventListener();  
  
      pkgLocation =  
        @"C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" +  
        @"\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx";  
      app = new Application();  
      pkg = app.LoadPackage(pkgLocation, eventListener);  
      pkgResults = pkg.Execute(null, null, eventListener, null, null);  
  
      Console.WriteLine(pkgResults.ToString());  
      Console.ReadKey();  
    }  
  }  
}