Сбой сценария 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 и делает именно то, что мне нужно. Однако после развертывания пакета задание завершается с ошибкой, что приводит к ошибке

Источник: Удалить строку заголовка Описание: System.Reflection.TargetInvocationException: Исключение было сгенерировано целью вызова. ---> System.Runtime.InteropServices.COMException (0x800A03EC): Microsoft Excel не может получить доступ к файлу 'G:\Folder\Folder1\Status File\Status26032015.xls'. Есть несколько возможных причин: Имя файла или путь не существует.? Файл используется другой программой.? Книга, которую вы пытаетесь сохранить, имеет то же имя, что и текущая открытая книга.

Пакет выполняется как ServerName\Administrator, у которого есть доступ к G: (поскольку он не сможет работать при создании файла, поскольку это делается с помощью той же переменной). Однако все статьи, которые я проверил, указывают на разрешения агента SQL Server, так как 90% задания выполняется, включая создание файла на диске G, который, безусловно, должен иметь доступ.

2 ответа

Решение

Попробуйте добавить эту папку на сервер, на котором выполняется задание агента SQL; C:\Windows\SysWOW64\ Config\systemprofile\Desktop

Это решило подобную проблему, с которой я столкнулся.

Более подробная информация здесь: 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, например \\myserver\fileshare

Другие вопросы по тегам