Это звучит как болезненный процесс. Если бы это был я, я бы пропустил биты Excel + Powerquery в пакете служб SSIS. Просто загрузите данные из представлений DMV (с отметкой времени) непосредственно в таблицы. Предпочтительно временные таблицы SQL Server 2016.
Затем создайте электронную таблицу Excel вне процесса SSIS для конечных пользователей, которая извлекает данные из запросов временной таблицы. Из-за характера запросов к временной таблице сегмент / окно по умолчанию для них всегда будет «самым последним» (однако это определено для временной таблицы ...).
Затем вы можете параметризовать временной сегмент, отправленный обратно во временные запросы, чтобы захватить разные окна - установите список Excel «квантов» для отправки во временный запрос, пользователь выбирает значение из списка, который затем вызывает данные обновляются для этого «кванта».
Если вы можете использовать SQL Server 2016+, изучите временные таблицы и запросы. Похоже, они облегчили бы то, что вы пытаетесь сделать здесь.
В книге Excel (.xlsm) вы можете обновить данные PowerQuery при открытии книги, что всегда должно быть «самыми последними» данными.
Excel, как правило, не очень хороший инструмент для автоматического анализа данных. Это прежде всего инструмент конечной точки пользователя.
Существует множество скриптов Powershell для «запуска» Excel (через COM-взаимодействие), если вам нужно сделать это таким образом. Это оставляет процесс Powershell, вызываемый из SSIS, ответственным за разрушение COM-объектов после завершения процесса Powershell.
Автоматизация Excel через COM Interop на сервере сопряжена с риском того, что Excel не выйдет полностью, что приведет к тому, что многие процессы Excel-зомби будут поглощать ресурсы. Так что остается настроить другой процесс, который периодически убивает процессы зомби в Excel ... (и в сетях есть примеры того, как это сделать тоже), если вы не можете полностью очистить [sic] после Excel.
Если вам нужно создавать файлы Excel из серверного процесса (каким будет SSIS ...), в прошлом я имел успех, используя EPPlus .Net DLL со скриптами Powershell в SSIS. Powershell получает данные, а затем вызывает EPPlus для записи данных непосредственно в файлы Excel (.xlsx) без необходимости или взаимодействия с Excel.exe. (чтение тоже работает).
Библиотека "NPOI.dll" является портом .Net библиотеки Java "POI", которая также может выполнять запись в файлы "Excel.Old" (.xls), а также в файлы .xlsx. Работает аналогично EPPlus.
Большим преимуществом любого из них (который, я подозреваю, вы заметили, что Powerquery также не работает с данными ...) является то, что вы можете обойти "справку", которую Excel будет применять к данным, загружаемым в рабочую книгу. , (например, с помощью EPPlus вы можете вставлять почтовые индексы или американские SSN в ячейки в виде текстовых значений - вы управляете стилями ячеек и форматом отображения. Excel «поможет» вам, преобразовав их в числовые данные, потеряв при этом все начальные 0. ... попытка преодолеть эту антипомощь включает в себя любое количество разных кладджей).