如何在SQL Server Management Studio中运行exe文件

时间:2019-05-13 10:57:11

标签: python sql-server ssms

我已经创建了一个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('SELECT top 1 Phone,来自SMS1的消息,其中LEN(Phone)= 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中尝试此操作时,出现语法错误。如何在SQL中运行上述python脚本。我调查了sp_execute_external_script的过程,正在运行SSQL Server 2017,分别安装了python和r。

2 个答案:

答案 0 :(得分:0)

如果连接到服务器,则它无权访问本地计算机。您可以尝试将.exe放在您的服务器上,或者切换到运行本地连接,以便它可以访问。

答案 1 :(得分:0)

通常,文件系统权限不足。检查并确认运行SQL Server的用户帐户(例如LocalSystem或NetworkService)具有对可执行文件的权限(“读取+执行”)。

转到-> Services.msc,并检查您的SQL Server是否正在使用当前的用户/管理员用户身份验证运行,该身份验证具有访问文件系统的权限。

xp_cmdshell需要访问“ C:\ WINDOWS \ system32”的权限,检查是否可访问。

也将exe文件放入C:或D:的内部文件夹,即“ D:\ dist \ dbtest.exe”