在SQL作业中作为步骤调用时,SSIS包未运行

时间:2009-05-26 21:51:35

标签: ssis permissions sql-server-agent

我有一个.dtsx文件(一个SSIS包),它从FTP服务器下载文件并导入数据。每当我手动运行它时运行正常。但是,当我计划将包调用为SQL Server代理作业中的一个步骤时,它会失败。它失败的步骤是我调用.bat文件的步骤。作业历史记录查看器中的错误说明了这一点:

  

错误:2009-05-26 12:52:25.64
  代码:0xC0029151来源:执行   批处理文件执行处理任务
  描述:执行中   “D:\ xxx \ import.bat”“”at“”,The   进程退出代码为“1”而   预期为“0”。结束错误DTExec:   包返回执行   DTSER_FAILURE(1)。

我认为这是一个权限问题,但我不知道如何解决这个问题。作业所有者是管理员用户,因此我已经验证他们对.bat文件所在目录的权限。我已尝试进入服务并更改SQL Server代理的“登录身份”选项,并且这两个选项都不起作用(本地系统帐户和此帐户)。有没有人知道需要调整哪些其他权限才能使其正常工作?

5 个答案:

答案 0 :(得分:2)

对我来说这是一个权限问题。转到环境 - >目录,然后将本地目录更改为SQLAgentUser可以访问的内容。我用C:\ temp。单击“保存”下拉列表,然后选择“设置默认值”。

答案 1 :(得分:1)

您是在批处理文件中执行SSIS作业,还是批处理文件是SSIS控制流程中的一步?

我假设后者为这个答案。您使用什么任务来执行批处理文件(例如,简单的执行程序任务或脚本任务)。如果是后者,看起来您的批处理文件实际上在某个步骤失败,而不是SSIS脚本。我会检查您的批处理文件尝试访问的权限

事实上,将批处理文件重写为SSIS中的脚本任务可能是一个更好的主意,因为您将获得更好的错误报告(它会告诉您脚本中的哪一步失败)。

您可以尝试在命令窗口中使用runas命令执行批处理文件。如果您尝试在本地系统或网络系统帐户下执行它,它应该会给您一个更好的错误。如果确实出错,您可以通过“echo%ERRORLEVEL%”来检查错误级别。

如果不是后者,并且您通过批处理文件执行SSIS包,为什么?

答案 2 :(得分:1)

我尝试将批处理文件作为SQL作业步骤执行,它提供了更多细节。它显示它在我尝试调用可执行文件时失败,该文件在与我的.bat文件相同的目录中,但在windows / system32目录中没有,这是从它执行的地方。

我将可执行文件移动到system32目录,但后来我不知道我的文件被下载到哪里。然后我发现有一个名为WorkingDirectory的执行进程任务(执行.bat的任务)的属性。我将它设置为bat所在的目录,将可执行文件移回与.bat文件相同的文件中,现在它按预期工作。

答案 3 :(得分:0)

您是否可以访问.bat文件中的映射驱动器?如果是这样,您不能依赖服务中的映射驱动器,因此您必须使用UNC路径。

答案 4 :(得分:0)

我遇到了同样的错误,我通过登录运行该作业的用户帐户解决了这个问题,在那里打开了有问题的Coreftp站点,测试了站点访问权限,在那里进行了更改(在我的情况下,我不得不重新进入新密码)现在它的工作原理。 所以,是的,它是文件访问的问题。这个是对相关核心站点的文件访问。