Как запустить exe-файл в студии управления SQL Server - PullRequest
0 голосов
/ 13 мая 2019

Я создал скрипт на python и увидел, что единственный способ, которым я могу попытаться запустить его в SQL-запросе, - это если я превратил его в файл .exe и попытался запустить в SQL-запросе.

Я пробовал следующее. Но не повезло, и я не могу найти хорошее пошаговое руководство о том, как этого добиться.

EXEC xp_cmdshell '"C:\Users\USER\Desktop\pythonexe\dist\dbtest.exe"'

Результат от ssms

1 Access is denied
2 NULL

Я сделал все необходимые настройки, необходимые для xp_cmdshell, и когда я запускаю exe-файл, просто дважды щелкнув по нему, он работает нормально.

Я подозреваю, что это как-то связано с пользователями и разрешениями. Но я не могу найти хорошее руководство о том, как это настроить.

То, что делает мой скрипт на Python, - это получение данных из запроса и их анализ в API шлюза обмена текстовыми сообщениями. Когда я запускаю это в Python, он работает нормально. Теперь мне нужно запустить этот прогон в студии управления сервером сиквела как часть хранимой процедуры. Это поможет автоматизировать процесс отправки текстовых сообщений из полученных данных. Это скрипт Python

cursor = conn.cursor () cursor.execute ('ВЫБЕРИТЕ верхний 1 телефон, сообщение с смс1 ГДЕ ЛЕН (телефон) = 13')

for row in cursor:

    username = "sandbox"
    apikey = "bf6c41a2be6"

    africastalking.initialize(username, apikey)

    sms = africastalking.SMS

    number = [row[0]]

    recipients = number

    message = row[1]
    print(number, message)

    sender = "MegaLtd"

    try:
        response = sms.send(message, recipients, sender)
        print(response)
    except Exception as e:
        print(f"Houston, we have a problem {e}")

Когда я пробую это в ssms, я получаю синтаксическую ошибку. Как я могу запустить вышеупомянутый скрипт Python в SQL. Я изучил процесс sp_execute_external_script и запускаю SSQL Server 2017 и установил python и r соответственно.

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

Обычно недостаточно прав для файловой системы.Проверьте и убедитесь, что учетная запись пользователя, на котором выполняется SQL Server (например, LocalSystem или NetworkService), имеет разрешение (Read + Execute) на исполняемые файлы.

Перейдите -> Services.msc и убедитесь, что ваш SQL-сервер работает с текущей аутентификацией пользователя / администратора, которая имеет разрешение на доступ к вашей файловой системе.

xp_cmdshell требует разрешения для доступа к "C: \ WINDOWS \ system32", чтобы проверить, доступен ли он.

Также поместите exe-файл во внутреннюю папку C: или D: т.е. "D: \ dist\ dbtest.exe "

0 голосов
/ 13 мая 2019

Если вы подключены к серверу, он не имеет доступа к вашему локальному компьютеру.Вы можете попробовать поместить .exe на ваш сервер или переключиться на локальное подключение, чтобы оно имело доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...