Я хочу сгенерировать несколько отчетов excel с помощью сценариев vba, вызванных из хранимой процедуры. Моя команда получила почти одно решение BI, и ранее они использовали скрипт VBA, который открывал файл excel с макросами внутри.Лучший способ выполнить CMD из сценария SQL
процесс формирования отчетов следует по этому пути:
Там же процедура SQL Stored выполнена из еженедельной плановой работы, то мы называем другую процедуру, которая готовит и расчет данные, а затем мы открываем скрипта представлены ниже, чтобы запустить Excel.
Вот как этот сценарий выглядит следующим образом:
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("E:\Path\To\Excel.xlsm")
Мы называем этот сценарий таким образом:
EXEC master..xp_cmdshell 'C:\WINDOWS\SysWOW64\WSCRIPT.EXE Z:\Path\To\Script.vbs'
У меня возникли проблемы с WScript.exe, это висит при открытии отчетов, а также при Я искал решение, о котором я много читал, не используя XP_CMDSHELL
. И возникает вопрос: есть ли способ избежать использования XP_CMDSHELL
и не создавать путь генерации отчетов с нуля? Я немного спешу, поэтому у меня нет времени писать новые процедуры и т. Д.
Попробуйте использовать 'cscript.exe' вместо' wscript.exe' https://technet.microsoft.com/en-gb/library/bb490816.aspx. 'Wscript' вызывает ошибки и сообщения в GUI - это может быть причиной процесса висячего. –
Если вы можете изменить «Хранимые процедуры» на «Таблично-оцененные функции» (лучше всего было ** inline-TVF **), это можно сделать намного проще. Вы просто открываете соединение ODBC и вызываете непосредственно из SQL Server, например 'SELECT * FROM dbo.MyFunction (@ prm1, @ prm2, ...)'. Есть даже помощник, который поможет вам с * внешними данными * ... – Shnugo