以程式設計方式列舉可用的封裝
當您以程式設計方式處理 Integration Services 封裝時,可能會需要判別個別的封裝或資料夾是否存在,或是列舉可供載入與執行的預儲封裝。 Microsoft.SqlServer.Dts.Runtime 命名空間的 Application 類別會提供各種方法以滿足這些需求。
本主題內容
判斷封裝或資料夾是否存在
列舉可用的封裝
範例 (SSIS 封裝存放區)
範例 (SQL Server)
如需有關以程式設計方式載入和執行封裝的詳細資訊,請參閱<以程式設計的方式載入和執行本機封裝>與<以程式設計方式載入和執行遠端封裝>。 如需有關以程式設計方式管理封裝和資料夾的詳細資訊,請參閱<以程式設計方式管理封裝與資料夾>。
本主題中討論的所有方法都需要 Microsoft.SqlServer.ManagedDTS 組件的參考。 在新專案中加入此參考之後,請使用 using 或 Imports 陳述式匯入 Microsoft.SqlServer.Dts.Runtime 命名空間。
重要事項 |
---|
用以搭配 SSIS 封裝存放區使用的 Application 類別之方法,僅支援 "."、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();
}
}
}
回到頁首
|