本地或远程程序执行SSIS包?

时间:2012-02-27 18:50:34

标签: c# ssis

我的桌面上有一个SSIS包,我在远程盒子上注册了Integration Services。

我将用于执行我在该盒子上注册的SSIS包的服务将托管在网络中的其他应用服务器上,并将调用执行包。

在我开始编写最终代码以实现这一目标之前,我已经开始讨论如何进行:

MSDN有两篇关于如何以编程方式访问SSIS包的文章。

一篇文章标题为:Running an SSIS Package Programmatically on a Remote Computer

另一篇文章标题为:Running an SSIS Package Programmatically on a Local Computer

我已经阅读了两篇文章,但令我困惑的是他们如何使用“本地”和“远程”这两个术语。 \

本地文章似乎表示,即使您在另一台计算机上有一个软件包,通过此实现,它也可以在您的本地计算机上运行。

使用远程文章,似乎只有在调用它的服务在同一台机器上运行时才会执行该程序包。对我来说,这似乎是一个真正的“本地”实施。

如上所述,为了执行包,我需要遵循哪条/实现?

同样,我在我的工作站上运行Windows服务并尝试执行在另一个工作站上注册的软件包。对我来说,这似乎是远程路线,但我不知道。

帮助!感谢。

1 个答案:

答案 0 :(得分:3)

是的,你是对的,这有点令人困惑。您还应该阅读this博客条目。 Michael Entin发布了大量机会。他专注于运行包的本地/远程执行方式。

但是,还有另一种方式,通过PowerShell

在您的情况下,我认为如果您在应用程序服务器上实现Web服务将不会很好。如果您在此Web服务中使用SMO,我猜这个包将在没有安装SSIS的同一台服务器上执行。所以这会失败。如果您在数据库服务器上安装Web服务,它就可以了。但是这样,您应该在此服务器上打开一个特定的端口。 (好吧,我知道如果你实现PowerShell方式,必须打开两个端口。)

更新

我试着解释一个小例子。假设您开发了一个WinForms应用程序,其中您将有一个将启动SSIS包的任务。您在应用程序服务器上安装了此应用程序。还有另一台安装了SQL Server(和SSIS)的服务器。这是您的数据库服务器。当我们谈论本地/远程包执行时,我们从WinForms应用程序的角度来看系统。由于SSIS组件安装在远程服务器(即数据库服务器)上,因此只能使用远程执行。因此,您的Windows服务应该在数据库服务器上实现。另一个问题可能是如何到达这个Windows服务。在前面提到的remote execution article中,有两种实现远程执行的方法:通过SQL Server代理作业,以及通过Web服务。第三个选项是PowerShell,如上所述。

当然,从作业或Web服务的角度来看,它是一个真正的本地实现,正如您所写的那样。但MSDN文章侧重于您的应用程序服务器上的应用程序(例如WinForms应用程序)。