Задание агента SSIS завершается неудачно при отключении от удаленного сеанса RDP с (X) - PullRequest
0 голосов
/ 18 марта 2020

У меня есть пакет служб SSIS, который принимает документ Excel и обновляет запросы и сводки в документе, затем сохраняет его и затем отправляет его в пункт назначения через «Отправить задачу по электронной почте».

Итак, прежде всего Первая проблема заключалась в том, что пакет служб SSIS работает идеально (без ошибок), когда я запускаю его из SSMS 2018 (SQL Server 2019 Dev) и VS 2019, но при использовании SQL Server Agent, похоже, он не работает. выполнить задачу скрипта. Затем я понял, что должен использовать windows key + run с dcomcnfg, затем go DCOM Config, затем go в свойствах приложения Microsoft Excel и изменить форму идентификации «Запускающий пользователь» на «этот пользователь» .

Если я использую свою учетную запись CAPCUBED_VM \ Ruahl Behr или учетную запись администратора, то она отлично работает, но тогда проблема в том, что я не могу открыть Excel нормально, так как выдает ошибку:

Невозможно использовать связывание и встраивание объектов ".

Итак, я попытался использовать" Интерактивный пользователь ", и это отлично работает с SQL Агентской работой. Проблема, с которой я сталкиваюсь сейчас, заключается в том, что я Я подключен к RDP, пакет отлично работает через SQL Server Agent (Расписание), но когда я отключаюсь от RDP (используя «X»), пакет выдает мне следующую ошибку:

Обновление ежедневного представления группы WIP: ошибка: не удалось получить фабрику класса COM для компонента с CLSID {00024500-0000-0000-C000-000000000046} из-за следующей ошибки: 8000401a Th Процесс сервера не может быть запущен из-за неправильной настройки идентификатора. Проверьте имя пользователя и пароль. (Исключение из HRESULT: 0x8000401A).

У меня SQL Агент сервера настроен на использование учетной записи локальной системы.

Возможно, это может быть связано с реальной папкой, в которой Документы Excel сохраняются?

ОБНОВЛЕНИЕ:

Я обнаружил, что когда я запускаю только «Отправить задачу по электронной почте», пакет работает нормально, даже если он отключен от RDP, но обнаружил, что задача скрипта - это то, где проблема. Может ли быть что-то не так в моем коде?

#region Namespaces
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Tasks;
using Microsoft.CSharp;
using System.Collections;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
#endregion


namespace ST_0163e0491a714593a4e34d0175f0e112
{

    [Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPoint]
    public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
    {
        #region VSTA generated code
        enum ScriptResults
        {
            Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
            Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
        };
        #endregion


        public void Main()
        {
            ExcelRefresh(@"C:\Users\Ruahl Behr\Desktop\Daily WIP\Daily WIP Report - Group.xlsm");
            Dts.TaskResult = (int)ScriptResults.Success;
        }

        private void ExcelRefresh(string Filename)
        {
            object NullValue = System.Reflection.Missing.Value;
            Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application
            {
                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();

            excelApp.Application.CalculateUntilAsyncQueriesDone();

            //System.Threading.Thread.Sleep(120000);

            //Run Macro Fix Dates
            excelApp.Run("Fix_Dates");

            //Refresh Pivot Tables
            foreach (Microsoft.Office.Interop.Excel.PivotCache pt in Workbook.PivotCaches())
                pt.Refresh();

            Workbook.Save();
            Workbook.Close(true);
            excelApp.Quit();
            Workbook = null;
            System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...