共用方式為


以程式設計的方式載入和執行本機封裝

適用於:SQL Server Azure Data Factory 中的 SSIS Integration Runtime

您可以使用執行套件中敘述的方法,視需要或在預定時段執行 Integration Services 套件。 然而,只需要幾行的程式碼,您就可以從 Windows Form 應用程式、主控台應用程式、ASP.NET Web 表單或 Web 服務,或是 Windows 服務等自訂應用程式執行封裝。

此主題會討論:

  • 以程式設計方式載入封裝

  • 以程式設計方式執行封裝

本主題中用來載入和執行套件的所有方法,都需要 Microsoft.SqlServer.ManagedDTS 組件的參考。 在新專案中新增參考之後,請使用 usingImports 陳述式匯入 Microsoft.SqlServer.Dts.Runtime 命名空間。

以程式設計方式載入封裝

無論封裝儲存在本機或遠端,如果要在本機電腦上以程式設計方式載入封裝,請呼叫下列其中一種方法:

儲存位置 要呼叫的方法
檔案 LoadPackage
SSIS 封裝存放區 LoadFromDtsServer
SQL Server LoadFromSqlServer

重要

搭配 SSIS 封裝存放區使用之 Application 類別的方法,僅支援 "."、localhost 或本機伺服器的伺服器名稱。 您無法使用 "(local)"。

以程式設計方式執行封裝

在本機電腦上執行封裝的 Managed 程式碼中開發自訂應用程式需要下列方法。 接下來的範例主控台應用程式中將示範此處摘要的步驟。

以程式設計的方式在本機電腦上執行封裝

  1. 啟動 Visual Studio 開發環境,並以慣用的開發語言建立新應用程式。 此範例使用主控台應用程式,不過,您也可以從 Windows Form 應用程式、ASP.NET Web 表單或 Web 服務或是 Windows 服務執行封裝。

  2. 在 [專案] 功能表上,按一下 [新增參考],然後新增 Microsoft.SqlServer.ManagedDTS.dll 的參考。 按一下 [確定] 。

  3. 使用 Visual Basic Imports 陳述式或 C# using 陳述式匯入 Microsoft.SqlServer.Dts.Runtime 命名空間。

  4. 在主常式中加入下列程式碼。 完成的主控台應用程式應類似下列範例。

    注意

    範例程式碼會透過使用 LoadPackage 方法示範從檔案系統載入封裝。 不過,您也可以呼叫 LoadFromSqlServer 方法從 MSDB 資料庫載入套件,或呼叫 LoadFromDtsServer 方法從 Integration Services 套件存放區載入套件。

  5. 執行專案。 範例程式碼會執行隨 SQL Server 範例安裝的 CalculatedColumns 範例套件。 封裝執行的結果會顯示在主控台視窗中。

範例程式碼

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

從執行封裝擷取事件

當您以程式設計方式執行封裝 (如前面的範例所示),可能也會想要擷取當封裝執行時所發生的錯誤及其他事件。 您可以藉由加入從 DefaultEvents 類別繼承的類別,以及藉由在載入封裝時將參考傳遞給該類別,來完成這項作業。 雖然下列範例只會擷取 OnError 事件,不過 DefaultEvents 類別可讓您擷取更多其他事件。

以程式設計的方式在本機電腦上執行封裝並擷取封裝事件

  1. 遵循上述範例中的步驟,為此範例建立專案。

  2. 在主常式中加入下列程式碼。 完成的主控台應用程式應類似下列範例。

  3. 執行專案。 範例程式碼會執行隨 SQL Server 範例安裝的 CalculatedColumns 範例套件。 封裝執行的結果以及任何發生的錯誤都會顯示在主控台視窗中。

範例程式碼

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

另請參閱

了解本機和遠端執行之間的差異
以程式設計方式載入和執行遠端套件
載入本機套件的輸出