我已经创建了一个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。
答案 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”