Bagikan melalui


Memuat dan Menjalankan Paket Lokal Secara Terprogram

Berlaku untuk: SQL Server SSIS Integration Runtime di Azure Data Factory

Anda dapat menjalankan paket Layanan Integrasi sesuai kebutuhan atau pada waktu yang telah ditentukan dengan menggunakan metode yang dijelaskan dalam Paket Yang Berjalan. Namun, hanya dengan beberapa baris kode, Anda juga dapat menjalankan paket dari aplikasi kustom seperti aplikasi Formulir Windows, aplikasi konsol, formulir web ASP.NET atau layanan Web, atau layanan Windows.

Topik ini membahas:

  • Memuat paket secara terprogram

  • Menjalankan paket secara terprogram

Semua metode yang digunakan dalam topik ini untuk memuat dan menjalankan paket memerlukan referensi ke rakitan Microsoft.SqlServer.ManagedDTS . Setelah menambahkan referensi dalam proyek baru, impor Microsoft.SqlServer.Dts.Runtime namespace layanan dengan pernyataan menggunakan atau Impor .

Memuat Paket Secara Terprogram

Untuk memuat paket secara terprogram di komputer lokal, apakah paket disimpan secara lokal atau jarak jauh, panggil salah satu metode berikut:

Lokasi Penyimpanan Metode untuk Memanggil
File LoadPackage
Penyimpanan Paket SSIS LoadFromDtsServer
SQL Server LoadFromSqlServer

Penting

Metode Application kelas untuk bekerja dengan Penyimpanan Paket SSIS hanya mendukung ".", localhost, atau nama server untuk server lokal. Anda tidak dapat menggunakan "(lokal)".

Menjalankan Paket Secara Terprogram

Mengembangkan aplikasi kustom dalam kode terkelola yang menjalankan paket di komputer lokal memerlukan pendekatan berikut. Langkah-langkah yang dirangkum di sini ditunjukkan dalam aplikasi konsol sampel yang mengikuti.

Untuk menjalankan paket pada komputer lokal secara terprogram

  1. Mulai lingkungan pengembangan Visual Studio, dan buat aplikasi baru dalam bahasa pengembangan pilihan Anda. Contoh ini menggunakan aplikasi konsol; namun Anda juga dapat menjalankan paket dari aplikasi Formulir Windows, formulir web ASP.NET atau layanan Web, atau layanan Windows.

  2. Pada menu Proyek , klik Tambahkan Referensi dan tambahkan referensi ke Microsoft.SqlServer.ManagedDTS.dll. Klik OK.

  3. Gunakan pernyataan Visual Basic Imports atau C# menggunakan pernyataan untuk mengimpor namespace Microsoft.SqlServer.Dts.Runtime .

  4. Tambahkan kode berikut dalam rutinitas utama. Aplikasi konsol yang telah selesai akan terlihat seperti contoh berikut.

    Catatan

    Kode sampel menunjukkan pemuatan paket dari sistem file dengan menggunakan LoadPackage metode . Namun Anda juga dapat memuat paket dari database MSDB dengan memanggil LoadFromSqlServer metode , atau dari penyimpanan paket Layanan Integrasi dengan memanggil LoadFromDtsServer metode .

  5. Jalankan proyek. Kode sampel menjalankan paket sampel CalculatedColumns yang diinstal dengan sampel SQL Server. Hasil eksekusi paket ditampilkan di jendela konsol.

Kode Sampel

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();  
    }  
  }  
}  

Mengambil Peristiwa dari Paket yang Sedang Berjalan

Saat Anda menjalankan paket secara terprogram seperti yang ditunjukkan dalam sampel sebelumnya, Anda mungkin juga ingin menangkap kesalahan dan peristiwa lain yang terjadi saat paket dijalankan. Anda dapat menyelesaikan ini dengan menambahkan kelas yang mewarisi dari DefaultEvents kelas, dan dengan meneruskan referensi ke kelas tersebut saat Anda memuat paket. Meskipun contoh berikut hanya OnError menangkap peristiwa, ada banyak peristiwa lain yang DefaultEvents memungkinkan Anda mengambil kelas.

Untuk menjalankan paket pada komputer lokal secara terprogram dan mengambil peristiwa paket

  1. Ikuti langkah-langkah dalam contoh sebelumnya untuk membuat proyek untuk contoh ini.

  2. Tambahkan kode berikut dalam rutinitas utama. Aplikasi konsol yang telah selesai akan terlihat seperti contoh berikut.

  3. Jalankan proyek. Kode sampel menjalankan paket sampel CalculatedColumns yang diinstal dengan sampel SQL Server. Hasil eksekusi paket ditampilkan di jendela konsol, bersama dengan kesalahan apa pun yang terjadi.

Kode Sampel

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();  
    }  
  }  
}  

Lihat Juga

Memahami Perbedaan antara Eksekusi Lokal dan Jarak Jauh
Memuat dan Menjalankan Paket Jarak Jauh Secara Terprogram
Memuat Output Paket Lokal