![](/img/trans.png)
[英]Execute package from SSIS catalog programmatically in SQL Server 2014
[英]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.