簡體   English   中英

從SQL Server 2012上的SSIS目錄執行SSIS包

[英]Executing SSIS packages from the SSIS catalog on SQL Server 2012

在SQL Server 2012的新SSIS目錄,從通過C#中的SQL Server 本地執行SSIS包的方式先前(它基本上下載包並執行它的調用者機器上)確實不再起作用:

Application app = new Application();
Package pkg = app.LoadFromSqlServer("\\FolderRoot", "myserver", null, null, null);
pkg.Execute();

MSDN文章以編程方式加載和運行本地程序包中討論了此方法。

對於SQL Server 2012,使用SSIS目錄方法,似乎執行SSIS包的新方法是使用Microsoft.SqlServer.Management.IntegrationServices命名空間中的類。 令我困惑的是,Microsoft沒有為這種處理包執行的新方法提供任何有用的文檔。 以下博客文章建議采用以下方式:

SqlConnection ssisConnection = new SqlConnection(@"Data Source=.\SQL2012;Initial Catalog=master;Integrated Security=SSPI;");
IntegrationServices ssisServer = new IntegrationServices(ssisConnection);
PackageInfo ssisPackage = ssisServer.Catalogs["SSISDB"].Folders["MasterChild"].Projects["MasterChildPackages"].Packages["master.dtsx"];
long executionIdentifier = ssisPackage.Execute(false, null, executionParameter);

但是,這不會在本地執行,而是在服務器上運行。 我的問題是,通過遠程SQL Server 2012上的SSIS目錄,是否仍然可以在我自己的機器上從該遠程服務器本地執行包?

定義“不起作用” 正如我從文檔中看到的那樣,您提供的相同代碼(適用於<2012的代碼)應該仍然適用於2012,它沒有被標記為已棄用,或者類似的東西。

確保你引用這個dll而不是舊的dll:

C:\\ Program Files(x86)\\ Microsoft SQL Server \\ 110 \\ SDK \\ Assemblies \\ Microsoft.SqlServer.ManagedDTS.dll

//編輯; 看來你現在確實是對的: http//technet.microsoft.com/en-us/library/ms141708.aspx

也許這會讓你前進(ps我不知道這是否會起作用,但我看到了一些有用的方法,也許你可以讓它工作):

var projectBytes = ssisServer.Catalogs["SSISDB"]
                             .Folders["MasterChild"]
                             .Projects["MasterChildPackages"].GetProjectBytes();

// note that projectBytes is basically __URFILE__.ispac      
using (var existingProject = Project.OpenProject(new MemoryStream(projectBytes)))
{
    existingProject.PackageItems["master.dtsx"].Package.Execute(.... todo ....)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM