以编程方式枚举可用的包

以编程方式使用 Integration Services 包时,您可能希望确定个别包或文件夹是否存在,或枚举可用于加载和执行的已保存的包。Microsoft.SqlServer.Dts.Runtime 命名空间的 Application 类提供了多种满足这些要求的方法。

主题内容

  • 确定包或文件夹是否存在

  • 枚举可用的包

    • 示例(SSIS 包存储区)

    • 示例 (SQL Server)

有关以编程方式加载和运行包的信息,请参阅以编程方式在本地计算机中运行 SSIS 包在远程计算机上以编程方式运行 SSIS 包。有关以编程方式管理包和文件夹的信息,请参阅以编程方式管理包和文件夹

本主题中讨论的所有方法都需要引用 Microsoft.SqlServer.ManagedDTS 程序集。在新项目中添加该引用后,请使用 using 或 Imports 语句导入 Microsoft.SqlServer.Dts.Runtime 命名空间。

重要说明重要提示

Application 类中用于处理 SSIS 包存储区的方法只支持“.”、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 源。

请参阅

概念