共用方式為


以程式設計方式列舉可用的封裝

當您以程式設計方式處理 Integration Services 封裝時,您可能想要判斷個別的封裝或資料夾是否存在,或是列舉可供載入及執行的已儲存封裝。Microsoft.SqlServer.Dts.Runtime 命名空間的 Application 類別會提供各種方法以滿足這些需求。

本主題內容

  • 判斷封裝或資料夾是否存在

  • 列舉可用的封裝

    • 範例 (SSIS 封裝存放區)

    • 範例 (SQL Server)

如需有關以程式設計方式載入和執行封裝的詳細資訊,請參閱<以程式設計的方式載入和執行本機封裝>與<以程式設計方式載入和執行遠端封裝>。如需有關以程式設計方式管理封裝和資料夾的詳細資訊,請參閱<以程式設計方式管理封裝與資料夾>。

本主題中討論的所有方法都需要 Microsoft.SqlServer.ManagedDTS 組件的參考。在新專案中加入此參考之後,請使用 using 或 Imports 陳述式匯入 Microsoft.SqlServer.Dts.Runtime 命名空間。

重要注意事項重要事項

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

判斷封裝或資料夾是否存在

若要以程式設計方式判斷儲存的封裝是否存在,請在嘗試載入和執行封裝之前,呼叫下列其中一個方法:

儲存位置

要呼叫的方法

SSIS 封裝存放區

ExistsOnDtsServer

SQL Server

ExistsOnSqlServer

若要以程式設計方式判斷資料夾是否存在,請在嘗試列出資料夾中儲存的封裝之前,呼叫下列其中一個方法:

儲存位置

要呼叫的方法

SSIS 封裝存放區

FolderExistsOnDtsServer

SQL Server

FolderExistsOnSqlServer

回到頁首

列舉可用的封裝

若要以程式設計方式取得儲存的封裝清單,請呼叫下列其中一個方法:

儲存位置

要呼叫的方法

SSIS 封裝存放區

GetDtsServerPackageInfos

SQL Server

GetPackageInfos

下列範例是可示範這些方法之使用的主控台應用程式。

範例 (SSIS 封裝存放區)

使用 GetDtsServerPackageInfos 方法來列出 SSIS 封裝存放區內儲存的封裝。由 SSIS 封裝存放區所管理的預設儲存位置是檔案系統和 MSDB。您可以在這些位置建立其他邏輯資料夾。

Imports Microsoft.SqlServer.Dts.Runtime

Module Module1

  Sub Main()

    Dim sqlFolder As String
    Dim sqlServer As String

    Dim ssisApplication As Application
    Dim sqlPackages As PackageInfos
    Dim sqlPackage As PackageInfo

    sqlServer = "."

    ssisApplication = New Application()

    ' Get packages stored in MSDB.
    sqlFolder = "MSDB"
    sqlPackages = ssisApplication.GetDtsServerPackageInfos(sqlFolder, sqlServer)
    If sqlPackages.Count > 0 Then
      Console.WriteLine("Packages stored in MSDB:")
      For Each sqlPackage In sqlPackages
        Console.WriteLine(sqlPackage.Name)
      Next
      Console.WriteLine()
    End If

    ' Get packages stored in the File System.
    sqlFolder = "File System"
    sqlPackages = ssisApplication.GetDtsServerPackageInfos(sqlFolder, sqlServer)
    If sqlPackages.Count > 0 Then
      Console.WriteLine("Packages stored in the File System:")
      For Each sqlPackage In sqlPackages
        Console.WriteLine(sqlPackage.Name)
      Next
    End If

    Console.Read()

  End Sub

End Module
using System;
using Microsoft.SqlServer.Dts.Runtime;

namespace EnumeratePackagesSSIS_CS
{
  class Program
  {
    static void Main(string[] args)
    {

      string sqlFolder;
      string sqlServer;

      Application ssisApplication;
      PackageInfos sqlPackages;

      sqlServer = ".";

      ssisApplication = new Application();

      // Get packages stored in MSDB.
      sqlFolder = "MSDB";
      sqlPackages = ssisApplication.GetDtsServerPackageInfos(sqlFolder, sqlServer);
      if (sqlPackages.Count > 0)
      {
        Console.WriteLine("Packages stored in MSDB:");
        foreach (PackageInfo sqlPackage in sqlPackages)
        {
          Console.WriteLine(sqlPackage.Name);
        }
        Console.WriteLine();
      }

      // Get packages stored in the File System.
      sqlFolder = "File System";
      sqlPackages = ssisApplication.GetDtsServerPackageInfos(sqlFolder, sqlServer);
      if (sqlPackages.Count > 0)
      {
        Console.WriteLine("Packages stored in the File System:");
        foreach (PackageInfo sqlPackage in sqlPackages)
        {
          Console.WriteLine(sqlPackage.Name);
        }
      }

      Console.Read();

    }

  }

}

回到頁首

範例 (SQL Server)

使用 GetPackageInfos 方法來列出儲存於 SQL Server 執行個體中的 Integration Services 封裝。

Imports Microsoft.SqlServer.Dts.Runtime

Module Module1

  Sub Main()

    Dim sqlFolder As String
    Dim sqlServer As String
    Dim sqlUser As String
    Dim sqlPassword As String

    Dim ssisApplication As Application
    Dim sqlPackages As PackageInfos
    Dim sqlPackage As PackageInfo

    sqlFolder = String.Empty
    sqlServer = "(local)"
    sqlUser = String.Empty
    sqlPassword = String.Empty

    ssisApplication = New Application()

    sqlPackages = ssisApplication.GetPackageInfos(sqlFolder, sqlServer, sqlUser, sqlPassword)

    For Each sqlPackage In sqlPackages
      Console.WriteLine(sqlPackage.Name)
    Next

    Console.Read()

  End Sub

End Module
using System;
using Microsoft.SqlServer.Dts.Runtime;

namespace EnumeratePackagesSql_CS
{
  class Program
  {
    static void Main(string[] args)
    {

      string sqlFolder;
      string sqlServer;
      string sqlUser;
      string sqlPassword;

      Application ssisApplication;
      PackageInfos sqlPackages;

      sqlFolder = String.Empty;
      sqlServer = "(local)";
      sqlUser = String.Empty;
      sqlPassword = String.Empty;

      ssisApplication = new Application();

      sqlPackages = ssisApplication.GetPackageInfos(sqlFolder, sqlServer, sqlUser, sqlPassword);

      foreach (PackageInfo sqlPackage in sqlPackages)
      {
        Console.WriteLine(sqlPackage.Name);
      }

      Console.Read();

    }
  }
}

回到頁首

Integration Services 圖示 (小) 掌握 Integration Services 的最新狀態

若要取得 Microsoft 的最新下載、文件、範例和影片以及社群中的選定解決方案,請瀏覽 MSDN 或 TechNet 上的 Integration Services 頁面:

若要得到這些更新的自動通知,請訂閱該頁面上所提供的 RSS 摘要。

請參閱

概念