我的桌面上有一个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服务并尝试执行在另一个工作站上注册的软件包。对我来说,这似乎是远程路线,但我不知道。
帮助!感谢。
答案 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应用程序)。