Заставить Excel запускать макрос с помощью SQL Query - PullRequest
0 голосов
/ 11 октября 2018

У меня есть требование для запуска файла Excel (.xls или .xlsm) с макросами, который уменьшает размер другого файла Excel и сохраняет его как другой файл в той же папке.Он работает нормально, когда я открываю файл вручную из папки, он запускается сразу и создает сжатый файл.

Но необходимо открыть запрос Excel из SQL и запустить его.Я пытаюсь сделать это двумя способами в моем запросе SQL.

(1) EXEC [master].dbo.xp_cmdshell 'c:\temp\MyExcelShrink.xls'
(2) EXEC  xp_cmdshell  'dtexec /f c:\temp\MyPackage.dtsx'

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

1 Ответ

0 голосов
/ 15 октября 2018

Когда вы используете xp_cmdshell, запускаемый процесс запускается в контексте безопасности входа службы SQL Server.Для этой учетной записи может не быть включена интерактивность рабочего стола или могут отсутствовать другие разрешения, необходимые для запуска макросов при запуске.

См. эту статью xp_cmdshell в блоге по безопасности SQL Server для получения дополнительной информации оxp_cmdshell, включая рекомендацию, что его не следует использовать: «Вообще говоря, вы должны избегать использования xp_cmdshell, и, если возможно, вы должны удалить любую зависимость от него».

...