远程检索和执行可用的SSIS包

时间:2016-07-05 12:18:31

标签: sql-server ssis

我想开发一个ASP.NET网站,用户可以在其中选择SSIS Package,提供一些参数并执行它。

我读到了Loading and Running a Remote Package Programmatically所以看起来从服务器y远程调用的服务器x​​运行SSIS Package的唯一方法是使用SQL Server Agent或编写手工制作的web服务。 这是正确的还是我错过了

如果我选择使用SQL Server Agent我是否需要为每个包创建一个我想要执行的作业?另外,我能够远程阅读所有可用的SSIS包吗?

2 个答案:

答案 0 :(得分:1)

如果您使用的是SQL2012或更高版本,则可以使用目录。搜索SSISDB将为您提供大量文章。

通过这种方式,您的Web应用程序可以查询目录,以找出可用于填充表单的包和参数。然后,您可以从应用程序发出TSQL语句以启动程序包运行。

答案 1 :(得分:1)

是的,你错过了另一个叫做

的方法
  

或用于启动远程计算机上的程序包的远程组件

对我来说,这就像PsExec

您发现SQL Agent的挑战有两个方面。第一个是一次只能运行一个作业实例。也许您的网页只允许/假设一个用户一次运​​行FoobitzLoader.dtsx,但通常网站允许多个用户执行操作。

第二个挑战,也许这是可取的,是代理作业的运行是异步的。该过程看起来像

  • 请开始工作X
  • 好的,它已经开始了

所以现在你正在查询msdb.dbo.sysjobhistory(我 think )表,寻找要完成的过程。也许这就是你想要的。也许不吧。通过PsExec调用SSIS包就像是“通常”

  • 请开始工作X
  • 好的,它已经开始了
  • 我们正在验证
  • 我们已加载行
  • 我们已加载更多行
  • ...
  • 包已成功完成

这可能是好事,也可能不是好事,因为您的用户可能会在进程运行时关闭网页并杀死dtexec进程。不确定你的用例,但这可能是你想要防范的事情。