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



我已经删除并重写了这个问题,因为我认为我不清楚,这引起了一些挫折。

我有一个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环境中,正是我所需要的。然而,一旦部署包,作业就会失败,并给出错误

来源:删除标题行描述:系统反射TargetInvocationException:已引发异常通过调用的目标。--->系统运行时。InteropServices。COMException(0x800A03EC):MicrosoftExcel无法访问文件"G:\Folder\Folder1\Status"File\Status26032015.xls'。可能有以下几个原因:?这个文件名或路径不存在?另一个正在使用该文件程序您试图保存的工作簿与当前打开的工作簿。

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

尝试在运行SQL代理作业的服务器上添加此文件夹;C: \Windows\SysWOW64\config\systemprofile\DDesktop

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

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

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

我相信这是因为它不会启动一个完整的windows会话,也不会加载用户的配置文件。

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

最新更新