以编程方式枚举可用的包
以编程方式使用 Integration Services 包时,您可能希望确定个别包或文件夹是否存在,或枚举可用于加载和执行的已保存的包。Microsoft.SqlServer.Dts.Runtime 命名空间的 Application 类提供了多种满足这些要求的方法。
主题内容
确定包或文件夹是否存在
枚举可用的包
示例(SSIS 包存储区)
示例 (SQL Server)
有关以编程方式加载和运行包的信息,请参阅以编程方式加载和运行本地包和以编程方式加载和运行远程包。有关以编程方式管理包和文件夹的信息,请参阅以编程方式管理包和文件夹。
本主题中讨论的所有方法都需要引用 Microsoft.SqlServer.ManagedDTS 程序集。在新项目中添加该引用后,请使用 using 或 Imports 语句导入 Microsoft.SqlServer.Dts.Runtime 命名空间。
重要提示 |
---|
Application 类中用于处理 SSIS 包存储区的方法只支持“.”、localhost 或本地服务器的服务器名称。不能使用“(local)”。 |
确定包或文件夹是否存在
若要以编程方式确定已保存的包是否存在,请先调用以下方法之一,然后再尝试加载和运行:
存储位置 |
调用的方法 |
---|---|
SSIS 包存储区 |
|
SQL Server |
若要以编程方式确定文件夹是否存在,请先调用以下方法之一,然后再尝试列出在其中存储的包:
存储位置 |
调用的方法 |
---|---|
SSIS 包存储区 |
|
SQL Server |
返回页首
枚举可用的包
若要以编程方式获取已保存的包的列表,请调用以下方法之一:
存储位置 |
调用的方法 |
---|---|
SSIS 包存储区 |
|
SQL Server |
下面的示例是控制台应用程序,演示了这些方法的用法。
示例(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();
}
}
}
返回页首
|