2009-05-26 49 views
3

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

Error: 2009-05-26 12:52:25.64
Code: 0xC0029151 Source: Execute batch file Execute Process Task
Description: In Executing "D:\xxx\import.bat" "" at "", The process exit code was "1" while the expected was "0". End Error DTExec: The package execution returned DTSER_FAILURE (1).

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

回答

1

我试着只执行批处理文件作为SQL Job步骤,它给出了更多细节。它表明,当我尝试调用与我的.bat文件位于同一目录中的可执行文件时,它失败,但不在执行它的windows/system32目录中。

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

1

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

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

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

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

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

+0

批处理文件在SSIS中的一个步骤中执行。这是一个执行进程任务。 从命令窗口运行时,批处理文件运行成功。当我手动运行SSIS包时,它也能成功运行。这就是为什么我认为这个问题与权限有关,也许是MSSQLAGENT? – Pamela 2009-05-27 23:21:20

+0

当您远程执行SSIS服务器时,是否通过runas命令执行批处理文件? 这应该使用SSIS执行它的权限执行它。 当你在Visual Studio中执行SSIS包时,它是否会给你同样的错误? – Dane 2009-05-27 23:41:36

+0

感谢您的帮助,戴恩!我做了一些故障排除,并将该批处理文件作为SQL作业中的一个步骤执行,并以此方式获得了更有用的错误消息。从那里,我能弄清楚这个问题! (请参阅下面的消息。) – Pamela 2009-05-28 00:29:47

0

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

+0

不,该.bat文件不在映射的驱动器上。 – Pamela 2009-05-27 23:21:41

2

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

0

我有同样的错误,我解决它通过登录到运行作业的用户帐户,有问题打开Coreftp条件的网站,测试网站访问,所做的改变有(在我的情况,我不得不重新进入新的密码),现在它工作。 所以是的,这是一个文件访问的问题。这是对有问题的coreftp站点的文件访问。

相关问题