5

データベースにある SSIS パッケージをプログラムで実行しようとしています。

私はこのAPIを使用しています:

Imports Microsoft.SqlServer.Dts.Runtime

パッケージへの (データベース内の) パスを説明する画像がありますが、 LoadFromSqlServerメソッドでpackagePathプロパティを適切に設定する方法がわかりません。

データベース内のパッケージ パスを説明する画像を次に示します。

ここに画像の説明を入力

4

3 に答える 3

6

Microsoft.SqlServer.Management.IntegrationServices への参照を追加する必要があります。私の場合、SQL Server フォルダーには表示されず、GAC でしか見つかりませんでした。

C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.Management.IntegrationServices\11.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.Management.IntegrationServices.dll

そのアセンブリからへの依存関係もあります

C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.Management.Sdk.Sfc\11.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.Management.Sdk.Sfc.dll

Sub Main()
    '
    ' Do not fault me for my poor VB skills nor my lack of error handling
    ' This is bare bones code adapted from 
    ' http://blogs.msdn.com/b/mattm/archive/2011/11/17/ssis-and-powershell-in-sql-server-2012.aspx

    Dim folderName As String
    Dim projectName As String
    Dim serverName As String
    Dim packageName As String
    Dim connectionString As String
    Dim use32BitRuntime As Boolean
    Dim executionId As Integer

    Dim integrationServices As Microsoft.SqlServer.Management.IntegrationServices.IntegrationServices
    Dim catalog As Microsoft.SqlServer.Management.IntegrationServices.Catalog
    Dim catalogFolder As Microsoft.SqlServer.Management.IntegrationServices.CatalogFolder
    Dim package As Microsoft.SqlServer.Management.IntegrationServices.PackageInfo

    ' Dimensions in your example
    folderName = "SSISHackAndSlash"
    ' dimCalendar in your example
    projectName = "SSISHackAndSlash2012"
    serverName = "localhost\dev2012"

    ' dimCalendar in your example (no file extension)
    packageName = "TokenTest.dtsx"
    connectionString = String.Format("Data Source={0};Initial Catalog=msdb;Integrated Security=SSPI;", serverName)

    integrationServices = New Microsoft.SqlServer.Management.IntegrationServices.IntegrationServices(New System.Data.SqlClient.SqlConnection(connectionString))
    ' There is only one option for an SSIS catalog name as of this posting
    catalog = integrationServices.Catalogs("SSISDB")

    ' Find the catalog folder. Dimensions in your example
    catalogFolder = catalog.Folders(folderName)

    ' Find the package in the project folder
    package = catalogFolder.Projects(projectName).Packages(packageName)

    ' Run the package. The second parameter is for environment variables
    executionId = package.Execute(use32BitRuntime, Nothing)

End Sub
于 2013-01-24T20:47:08.463 に答える
1

SQLサーバーに展開されているパッケージの場所を検索する場合。

  1. SSMSを開きます。
  2. IntegrationServicesに接続します。
  3. [表示]に移動し、[オブジェクトエクスプローラーの詳細]をクリックします。
  4. 次に、パッケージを選択して、SQLサーバーのパッケージパスを確認します。下のスクリーンショットを見てください。

LoadFromSqlServerサーバー名はメソッドのパラメーターになるため、無視してください。

したがって、パッケージパスは次のようになります:\ Stored Package \ MSDB \ Data Collector\PerfCountersUpload。

ここに画像の説明を入力してください

お役に立てれば。

于 2013-01-24T06:01:50.200 に答える
1

ビリンクの回答に加えて。

コードの C# バージョンは次のとおりです。

string folderName = "name";
string projectName = "name";
string serverName = "localhost";
string packageName = "name";
string connectionString = string.Format("Data Source={0};Initial Catalog=msdb;Integrated Security=SSPI;", serverName);

var integrationServices = new IntegrationServices(newSystem.Data.SqlClient.SqlConnection(connectionString));
var catalog = integrationServices.Catalogs["SSISDB"];
var catalogFolder = catalog.Folders[folderName];

var package = catalogFolder.Projects[projectName].Packages[packageName];

long execId = package.Execute(false, null);

私の場合、4 つの dll を追加する必要がありました。

Microsoft.SqlServer.ConnectionInfo.dll
Microsoft.SqlServer.Management.IntegrationServices.dll
Microsoft.SqlServer.Management.Sdk.Sfc.dll
Microsoft.SqlServer.Smo.dll

すべての依存関係を見つけることができますC:\Windows\assembly\GAC_MSIL\

于 2016-04-21T11:57:55.587 に答える