Службы SSIS: сделать задачу Excel видимой в сценарии во время выполнения задания агента SQL Server

Я создал пакет в службах SSIS, который использует задачу сценария для открытия файла Excel, форматирования и обновления некоторых данных в Excel. Я хотел бы, чтобы Excel был виден при выполнении задачи скрипта, чтобы увидеть, зависает ли Excel, что происходит постоянно. Это возможно? Я преобразовываю процесс, который вызывает Excel через скрипт оболочки, чтобы использовать SSIS для вызова Excel. Я предполагаю, что второй вопрос, это плохая идея?

2 ответа

Решение

Почему это плохая идея

Вообще говоря, администраторам поручено максимизировать количество времени безотказной работы сервера или службы на сервере. Чем больше программного обеспечения будет установлено на компьютере, тем выше вероятность прерывания обслуживания и перерывов в работе из-за исправлений. Чтобы иметь возможность манипулировать Excel в описанном вами механизме, вы собираетесь принудительно установить MS Office на этот компьютер. Это будет стоить вам лицензии на программное обеспечение, а количество необходимых исправлений приведет к пробоинам в любых соглашениях об уровне обслуживания, которых могут потребовать эти администраторы.

Утечки памяти. Наряду со всем патчем, по крайней мере, в прошлом были проблемы с программным управлением Excel, и это в основном сводилось к тому, что было легко привести к утечкам памяти (я должен дать вам понять. Выделенная память, но никогда не сдаваться, никогда не позволяйте выделенной памяти падать). Со временем сложный эффект заключается в том, что запуск этого пакета приведет к уменьшению объема доступной системной памяти, и единственный способ восстановить ее - перезагрузить компьютер, который возвращается к SLA.

Причина, по которой вы хотите увидеть, что делает Excel, заключается в том, что вы можете отслеживать выполнение, потому что оно "зависает, что происходит постоянно". Это не похоже на стабильный процесс. Опять же, ни один администратор не захочет, чтобы на серверах работал нестабильный процесс. Что-то не так в цикле событий. Будь то ваш код, который открывает Excel, макросы, которые он запускает, и т. Д., Что-то там не так, и поэтому вам нужно проверить процесс. Это похоже на наложение повязки на рану дробовика. Прекратите стрелять сами, и вам не понадобятся бинты.

Задача, которую вы пытаетесь выполнить, - "открыть файл Excel, отформатировать и обновить некоторые данные в Excel". Служба SSIS может изначально загружать данные в Excel. Если вы предварительно отформатировали файл, разработайте SSIS для записи в отформатированный файл и просто скопируйте его, это должно работать. Это не изящно, но это работает. Существуют более совершенные методы предоставления форматированных данных, но, не зная вашей инфраструктуры, я не знаю, являются ли SSRS, SharePoint, Excel Services, Power Pivot и т. Д. Приемлемыми вариантами.

Почему вы не сможете увидеть Excel

Вообще говоря, учетная запись, на которой работает агент SQL, вероятно, будет довольно мощной. Чтобы предотвратить такие вещи, как разрушительная атака, службы Windows 2008+ ограничены в своих возможностях. Чтобы учетная запись службы могла взаимодействовать с рабочим столом, вы должны переместить ее в пользовательский уровень приложений, что может быть не очень хорошо, если вы или ваши администраторы / администраторы неблагоприятны для риска.

Для получения дополнительной информации, пожалуйста, используйте следующие ссылки

Тем не менее, если все звезды выровнены и вы принимаете на себя риск Разрешить службе взаимодействовать с рабочим столом, ответ будет именно таким, как указал Сэм. В вашем непоказанном коде вам нужно установить Visible свойство к истине.

Когда вы уйдете и включите интерактивность с рабочим столом, кто-то оставит некоторый "тестовый" код в пакете, который будет развернут в производство с MessageBox.Show("Click OK to continue"); Имейте в виду, что если никто не заметит, что это диалоговое окно находится там, у вас будет работа, ожидающая завершения в течение очень долгого времени.

Что касается вашего первого вопроса, я понимаю, что вы хотите отладить задачу скрипта. Вы можете сделать Excel видимым, добавив следующую строку кода в задачу скрипта (предполагая, что C# является языком кодирования):

    // Create your Excel app
    var excelApp = new Excel.Application();

    // Make the Excel window visible to spot any issues
    excelApp.Visible = true;

Не забудьте удалить / прокомментировать эту строку после отладки.

Что касается вашего второго вопроса, я не думаю, что это плохая идея, если вы правильно обрабатываете, как открывается и закрывается Excel, чтобы избежать проблем с памятью.

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