如何在SQL Server代理作业中以管理员身份执行Python脚本


问题内容

我有一个Python (3.7.2)文件,该文件从第三方提取数据,将数据API保存在本地CSV文件中Windows Server 2016,然后将其bulk import放入SQL Server 2016(13.0.4224.16)的实例中。

如果我从提升权限的命令提示符下手动运行脚本,则此操作没有问题。但是,我不想手动运行此脚本,因为我希望它每小时执行一次。我知道如何从Task Scheduler服务器操作系统上进行调度,但是我想使用来作为自动作业进行调度SQL Server Agent。这样,我可以直接管理/跟踪作业,SSMS而不必登录服务器本身来检查计划的任务。

我目前有一个配置为1步骤类型Operating system (CmdExec)并将其Command:设置为的作业"C:\Windows\System32\cmd.exe" "python C:\PythonScripts\myPython.py"

在此处输入图片说明

我对上述内容的想法是,cmd.exe将其打开并python.exe使用我提供的python路径调用该程序。

但是,当我运行该作业时,它只是处于挂起状态In progress并且永远不会完成。手动运行时,脚本会在9秒内成功完成:

在此处输入图片说明

这里有什么想法吗?


问题答案:

通过添加凭证/代理帐户,Run as在步骤中将其分配给,然后将更Command改为如下所示,我能够解决问题:

C:\Windows\System32\cmd.exe /C python "C:\PythonScripts\myPython.py"