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


person GPH    schedule 26.03.2015    source источник
comment
Попробуйте произвести более тщательную очистку памяти. После нескольких запусков кода на вашем компьютере может быть запущено несколько копий Excel.exe. Например, посмотрите на область очистки этого решения: sqlage.blogspot.com/2013/12/   -  person Anoop Verma    schedule 29.03.2015
comment
Поскольку вы создаете файл excel в этом пакете SSIS, возможно ли, что соединение не было разрушено, когда вы переходите к следующему шагу и пытаетесь удалить строку? то есть задача, которая создает файл Excel и заполняет его, по-прежнему сохраняет соединение к моменту запуска второй задачи и пытается подключиться к новому файлу Excel. Можете ли вы разбить процесс на два отдельных пакета, чтобы очистка соединений происходила до того, как будет установлено соединение с отбрасыванием строк?   -  person William Salzman    schedule 01.04.2015
comment
@ william-salzman Уже пробовали разделить задачу сценария на отдельный пакет, даже создали пакетный сценарий, который убивает любой excel.exe, который может быть запущен, но все равно получить ошибку   -  person GPH    schedule 02.04.2015
comment
Если вы войдете на сервер и запустите пакет от имени себя, это сработает?   -  person billinkc    schedule 06.04.2015
comment
Также, если создать второй package. Черт возьми, вы можете скопировать и вставить существующий пакет, но отключить все, кроме вашего сценария удаления. В оригинале отключите скрипт удаления. Оригинал должен нормально работать от агента, как вы сказали. Затем запустите пакет сценария удаления через агента, он работает?   -  person billinkc    schedule 06.04.2015
comment
@billinkc ты читаешь мои мысли ...   -  person William Salzman    schedule 07.04.2015
comment
@WilliamSalzman Я мог бы сэкономить, если бы прочитал ваш комментарий поближе ...   -  person billinkc    schedule 07.04.2015


Ответы (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

person Thomas Nilsson    schedule 22.06.2015
comment
Спасибо вам большое за это. Совершенно безумно, что существует такая ошибка! Большое спасибо!!! - person GPH; 23.06.2015

Процесс агента SQL Server не сможет преобразовать подключенные диски, например. G:\.

Я считаю, что это связано с тем, что он не запускает полный сеанс Windows и не загружает профиль пользователя.

Я бы преобразовал ссылки на буквы диска в формат URI, например. \\myserver\fileshare

person Mike Honey    schedule 01.04.2015
comment
Привет, Майк, это не подключенный диск, это диск на сервере, на котором работает пакет SSIS. Пакет отлично работает до компонента задачи сценария, который включает создание нового файла в G: - person GPH; 02.04.2015