次の方法で共有


プログラムによる使用可能なパッケージの列挙

新規 : 2006 年 4 月 14 日

プログラムにより Integration Services パッケージを操作する際に、個々のパッケージまたはフォルダが存在するかどうかを判断したり、読み込みと実行が可能な保存済みパッケージを列挙したりする必要がある場合があります。Microsoft.SqlServer.Dts.Runtime 名前空間の Application クラスは、これらの要件を満たすさまざまなメソッドを提供します。

このトピックの内容

  • パッケージまたはフォルダが存在するかどうかの判断
  • 使用可能なパッケージの列挙
    • 例 (SSIS パッケージ ストア)
    • 例 (SQL Server)

プログラムによるパッケージの読み込みと実行の詳細については、「プログラムによるローカル パッケージの読み込みと実行」および「プログラムによるリモート パッケージの読み込みと実行」を参照してください。プログラムによるパッケージとフォルダの管理の詳細については、「プログラムによるパッケージとフォルダの管理」を参照してください。

このトピックで説明するすべてのメソッドには、Microsoft.SqlServer.ManagedDTS アセンブリへの参照が必要です。この参照を新しいプロジェクトに追加した後、using ステートメントまたは Imports ステートメントを使用して Microsoft.SqlServer.Dts.Runtime 名前空間をインポートします。

ms403343.note(ja-jp,SQL.90).gif重要 :
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 2005 のインスタンスに保存されている Integration Services パッケージを一覧表示します。

Visual Basic
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 パッケージの管理

ヘルプおよび情報

SQL Server 2005 の参考資料の入手