我已经删除并重写了这个问题,因为我认为我并不清楚,这引起了一些挫败感。
我有一个创建和填充 Excel 工作表的 SSIS 包,该包完美运行并根据需要创建文件,并且可以从 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 File\Status26032015.xls”。有几个可能的原因: ? 文件名或路径不存在。? 该文件正被另一个程序使用。? 您尝试保存的工作簿与当前打开的工作簿同名。
该包以 ServerName\Administrator 的形式执行,它确实可以访问 G:(因为它在创建文件时会失败,因为这是使用相同的变量完成的)。我检查过的所有文章都指向 SQL Server 代理权限,但是由于 90% 的工作都在运行,其中包括在 G 驱动器中创建一个文件,它肯定必须具有访问权限。