我如何在 SQL Server management studio 中 运行 一个 exe 文件

How can I run an exe file in SQL Server management studio

我已经创建了一个 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 中 运行 时,它工作正常。我现在需要做的是在 sequel server management studio 中将此 运行 作为存储过程的一部分。这将有助于从检索到的数据中自动发送文本消息。这是 python 脚本

光标=conn.cursor() cursor.execute('SELECT top 1 Phone,Message FROM sms1 WHERE 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 的过程,我是 运行ning SSQL Server 2017 并分别安装了 python 和 r。

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

一般是文件系统权限不足。检查并验证运行 SQL 服务器的用户帐户(例如 LocalSystem 或 NetworkService)是否具有对可执行文件的权限(读取+执行)。

转到 -> Services.msc 并检查您的 SQL 服务器是 运行 当前用户/管理员用户身份验证,它有权访问您的文件系统。

xp_cmdshell 需要访问权限 "C:\WINDOWS\system32" 检查是否可以访问。

同时将exe文件放入C:或D:的内部文件夹即"D:\dist\dbtest.exe"