Я удалил и переписал этот вопрос, так как не думаю, что я был ясен, и это вызвало некоторое разочарование.
У меня есть пакет 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 File \ Status26032015.xls. Есть несколько возможных причин:? Имя файла или путь не существует. ? Файл используется другой программой. ? Книга, которую вы пытаетесь сохранить, имеет то же имя, что и открытая в данный момент книга.
Пакет выполняется как ServerName \ Administrator, у которого есть доступ к G: (так как он завершился бы ошибкой при создании файла, поскольку это делается с той же переменной). Все статьи, которые я проверил, указывают на разрешения агента SQL Server, однако, поскольку выполняется 90% задания, которое включает создание файла на диске G, безусловно, у него должен быть доступ.