从SQL代理运行时,SSIS脚本任务失败

时间:2015-03-26 14:28:50

标签: ssis script-task

我删除并重写了这个问题,因为我认为自己并不清楚,这引起了一些挫败感。

我有一个SSIS包,用于创建和填充Excel工作表,该包运行完美并根据需要创建文件,并且可以按计划从SQL Server代理执行而不会出现任何问题。

当我尝试执行一个执行某个VB脚本以删除excel文件中特定行的脚本任务时,会出现此问题。

Public Sub Main()
    '


    Dim xlApp As Excel.Application
    Dim xlSheet As Excel.Worksheet

    xlApp = New Excel.Application
    xlApp.Workbooks.Open(Dts.Variables("NewFileName").Value.ToString)
    xlSheet = xlApp.Workbooks(1).ActiveSheet


    xlSheet.Rows(4).Delete()

    xlApp.Workbooks(1).Save()
    xlApp.Workbooks(1).Close()
    xlSheet = Nothing

    '
    Dts.TaskResult = ScriptResults.Success
End Sub

现在,它在BIDS环境中完美运行,完全符合我的需要。但是,一旦部署了包,作业就会失败并发出错误

  

来源:删除标题行说明:   System.Reflection.TargetInvocationException:抛出了异常   通过调用的目标。 --->   System.Runtime.InteropServices.COMException(0x800A03EC):Microsoft   Excel无法访问文件&#; G:\ Folder \ Folder1 \ Status   文件\ Status26032015.xls&#39 ;.有几个可能的原因:该   文件名或路径不存在。 ?该文件正被另一个人使用   程序。 ?您要保存的工作簿与a具有相同的名称   目前正在打开工作簿。

程序包作为ServerName \ Administrator执行,它可以访问G :(因为它在创建文件时会失败,因为这是使用相同的变量完成的)。我检查过的所有文章都指向了SQL Server代理权限,但是90%的作业都在运行,其中包括在G驱动器中创建一个肯定必须具有访问权限的文件。

2 个答案:

答案 0 :(得分:2)

尝试在运行SQL代理作业的服务器上添加此文件夹; C:\的Windows \ Syswow64资料\配置\ systemprofile \桌面

它解决了我面临的类似问题。

此处有更多信息:https://social.msdn.microsoft.com/forums/sqlserver/en-US/34e5596a-4d02-4499-8a4e-8dad9fa27528/ssis-2008-r2-script-task-fails-when-run-as-job

答案 1 :(得分:-1)

SQL Server代理进程将无法转换任何映射的驱动器,例如G:\

我认为这是因为它没有启动完整的Windows会话,也没有加载用户的个人资料。

我会将驱动器号引用转换为URI格式,例如\\myserver\fileshare