У меня есть пакет служб 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);
}
}
}