Исключение было выдано целью вызова - Ошибка задачи сценария служб SSIS

У меня есть следующая задача сценария, использующая C# для обновления сводной таблицы в Excel в пакете служб SSIS. Пакет хорошо работает в Visual Studio, а также в утилите пакетов. Но когда я развернул этот пакет в каталоге служб SSIS и запланировал задание агента SQL Server, в части задачи сценария произошел сбой с очень общим сообщением об ошибке

Exception has been thrown by the target of an invocation

Я исследовал несколько других вопросов и ответов, но наши ситуации сильно различаются.

Мой код задачи скрипта

using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
#endregion

namespace ST_0126969a11e546b3bbde047669039ab5
{
    [Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
    public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
    {
        public void Main()
        {
            //Dts.TaskResult = (int)ScriptResults.Success;

            ExcelRefresh(@"C:\\SSIS\\MTD.xlsx");
        }

        private void ExcelRefresh(string Filename)
        {
            object NullValue = System.Reflection.Missing.Value;

            Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
            excelApp.DisplayAlerts = false;
            Microsoft.Office.Interop.Excel.Workbook Workbook = excelApp.Workbooks.Open(
               Filename, NullValue, NullValue, NullValue, NullValue,
               NullValue, NullValue, NullValue, NullValue, NullValue,
               NullValue, NullValue, NullValue, NullValue, NullValue);
            Workbook.RefreshAll();

            Workbook.Save();
            //Workbook.SaveAs(DestinationPath, NullValue, NullValue, NullValue, NullValue, 
            // NullValue, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, 
            //NullValue, NullValue, NullValue, NullValue, NullValue);
            Workbook.Close(false, Filename, null);
            excelApp.Quit();
            Workbook = null;
            System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
        }
    }
}

Пожалуйста помоги.

2 ответа

«Исключение было вызвано целью вызова» — это общее исключение, создаваемое задачей «Сценарий» при возникновении ошибки. Чтобы прочитать настоящее сообщение об ошибке, вы можете добавить в свой код блок try, catch, как описано в следующей статье:

Глядя на ваш код, похоже, что ошибка возникает по одной из следующих причин:

  • На сервере отсутствуют сборки Microsoft Office Interop (офис не установлен)
  • Неверный путь к файлу Excel

Вариант A - Microsoft Office не был установлен на сервере. Техническим ответом является "установка и лицензирование Office", но это, как правило, не очень хорошая вещь, как я упоминаю здесь /questions/35687560/microsoft-excel-ne-mozhet-poluchit-dostup-k-fajlu-v-windows-server-2012/35687569#35687569

Вариант B - Office установлен, но вы выполняете пакет служб SSIS с иной скоростью, чем установленная версия. Если вы установили 32-разрядную версию Office, которая используется по умолчанию, необходимо запустить пакет служб SSIS в аналогичном домене. Версией выполнения служб SSIS по умолчанию для блока SQL Server будет 64-разрядная, поэтому либо используйте 32-разрядную среду выполнения, либо повторите установку Office, чтобы соответствовать вызову по умолчанию. Также рассматривается в вышеупомянутом ответе

Вариант C - Разрешения. Имеет ли учетная запись, на которой выполняется пакет служб SSIS, доступ к файловой системе по адресу C:\SSIS\ Имеет ли учетная запись разрешение на запись для этого расположения?

Вариант D - Существует ли местоположение и файл?

Вариант E - проверяет ли учетная запись, выполняющая пакет, бит InteractWithDesktop в активном каталоге - при условии, что это учетная запись службы

Вариант F - Используете ли вы ту же версию SSIS на сервере, на которой вы разработали?

Вариант G - На самом деле все работает нормально, но, поскольку вы закомментировали код возврата в Main, задача не выполняется.

Это мои главные мысли о том, куда это пошло.

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