Как запустить скрипт python с помощью xp_cmdshell из sql-server?
На сервере установлен python 3.8.5. Если запускать файл bot.py из командной строки, то все работает. Но мне нужно запускать этот файл через SQL SERVER 2012 по триггеру добавления новой строки в таблицу.
Пробовал по-разному:
Через PowerShell
DECLARE @CMDSQL VARCHAR(1000)
SET @CMDSQL = 'PS SQLSERVER:\SQL\TELEGRAMGATEWAY\MSSQL_TELEGRAM+sa\Databases\Problem\> D:\telegram.bat'
EXEC xp_CMDShell @CMDSQL
Выбивает ошибку
"PS" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
Через python
EXEC xp_cmdshell ' python "C:\Python\Telegram\bot.py" '
Выбивает ошибку
"python" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
Другим способом через python
EXEC xp_cmdshell 'python -S TELEGRAMGATEWAY\MSSQL_TELEGRAM -d Problem -i C:\Python\Telegram\bot.py'
Та же самая ошибка.
Как мне запустить этот скрипт без ошибок?
Ответы (1 шт):
Это может быть двухэтапный процесс:
(1) Создайте файл * .bat из двух строк:
c:\bot_launcher.bat, И убедитесь, что он работает в командной строке сам по себе.
Я использовал c: \ ... только для примера.
cd c:\Program Files\Python38\
python "C:\Python\Telegram\bot.py"
(2) Запустите c:\bot_launcher.bat в SSMS, используя его полностью квалифицированный путь:
EXEC xp_cmdshell 'c:\bot_launcher.bat'
Полезная ссылка: Установка Python и запуск сценариев Python из SQL Server SSMS