【发布时间】:2014-07-21 12:51:14
【问题描述】:
使用 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 命名空间中的类。令我困惑的是,微软没有为这种处理包执行的新方法提供任何有用的文档。 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 目录,是否仍然可以从该远程服务器在我自己的计算机上本地执行包?
【问题讨论】:
-
我从未尝试过以编程方式从 SSISDB 执行包。但是,SSIDB 中的包不仅仅是一个独立的包。它是一个项目的一部分。包必须在项目的上下文中执行,这只能通过 SSIDB 完成。
-
没错,包需要在其项目的上下文中执行。因此,真正的问题是如何在我的 PC 上本地执行整个远程部署的项目?
-
使用 Microsoft.SqlServer.Dts.Runtime;你试过这个命名空间吗..你想在 C# 代码中执行它吗?
-
@Govind 是的,我想在 C# 中执行它。该命名空间不适用于将包存储在 SSIS 目录中的 SQL Server。
标签: c# ssis sql-server-2012