如何从bat文件远程运行DTSX包?

时间:2020-03-06 15:04:05  来源:igfitidea点击:

我正在尝试使用以下命令从bat文件远程运行DTSX软件包:

DTEXEC /DTS "\File System\MY_PACKAGE_NAME" /SERVER MY_SERVER_NAME /MAXCONCURRENT " -1 " /CHECKPOINTING OFF  /REPORTING V

这在本地运行良好,但远程失败(我指向的计算机上确实具有管理员权限,并且我也具有SQL权限)我收到超时错误(登录超时已过期)。

解决方案

经过一些研究,似乎无法远程运行DTEXEC(它需要在本地运行,不支持远程执行)。

为了克服此限制,似乎广泛采用了以下方法:

  • 设置一个SQL作业以运行DTSX包
  • 设置存储过程以运行作业
  • 使用BAT文件中的isql命令行(远程执行)在相关SQL实例上运行存储过程(使用SQL凭据而非计算机凭据)

SSIS还公开了托管服务器上的Web服务。我们可以通过代码,在机器上查询软件包,通过数据库或者文件系统运行软件包以及通过我们喜欢的任何编程平台以编程方式添加/修改软件包的变量。

话虽如此,我们也可以设置Web服务来调用包含" DETEXEC"命令的本地批处理文件。

这很有可能,而且非常容易。不需要存储过程,SQL代理,Web或者.NET开发。令我惊讶的是,微软从未建议这样做:

  • 在SQL Server上计划任务以运行DTSX程序包。禁用它,这样它才能运行,直到我们从远程PC上手动执行它为止。
  • 使用以下命令从PC执行任务:
schtasks /run /tn MyTask [/s MySQLServer [/u [domain]user /p password]] /?

注意:如果我们不喜欢公开密码,请使用" PSEXEC"命令执行" schtasks"命令(从http://technet.microsoft.com/zh-cn/sysinternals/bb897553下载免费且功能强大的工具。 aspx