c# - 从 SQL Server 2012 上的 SSIS 目录执行 SSIS 包

标签 c# ssis 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 文章 Loading and Running a Local Package Programmatically 中进行了讨论.

对于 SQL Server 2012,使用 SSIS 目录方法,执行 SSIS 包的新方法似乎是使用 Microsoft.SqlServer.Management.IntegrationServices 中的类命名空间。令我困惑的是,Microsoft 没有为这种处理程序包执行的新方法提供任何有用的文档。 following blog post建议采用以下方法:

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,而不是旧的:

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 ....)
}

关于c# - 从 SQL Server 2012 上的 SSIS 目录执行 SSIS 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24865570/

相关文章:

visual-studio-2010 - 带有脚本的 SSIS 包无法升级到 VSTA - 如何修复或解决?

sql-server - 为什么在分区 'SWITCH' 语句中源和目标必须驻留在同一文件组中?

c# - 泛型方法中的 InvalidCastException

c# - 使用 LINQ 从两个列表中获取所有可能的连接对

c# - 删除边距按钮 ContentDialog Windows 10 Mobile - XAML

sql-server - 我的 SSIS 包有效,但作为 SSMS 作业失败(错误 : 0xC0016016)

c# - 需要一个 OOP 技巧

data-warehouse - 避免在 SSIS 中完全编写 SQL 查询

sql-server - SSIS 在预执行时挂起 - sql 命令完成 50%

sql - 支持外键检查约束