You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从SQL Server SSMS执行托管在远程桌面的外部Python脚本文件

从SSMS通过存储过程调用远程桌面Python项目并捕获输出的实现方案

前置准备

  • 远程桌面端Python环境配置完成,目标项目所在文件夹设置为网络共享,开放SQL Server运行账户的读取、执行权限
  • SQL Server所在机器可通过UNC路径(格式为\\远程桌面IP\共享文件夹名)正常访问远程桌面的共享目录
  • 确保远程Python脚本无依赖路径硬编码,可通过命令行直接正常运行,print语句输出正常

实现步骤

1. 首次配置:启用xp_cmdshell组件

xp_cmdshell是SQL Server提供的执行系统命令的组件,仅首次配置需要执行如下SQL:

-- 开启高级配置选项
sp_configure 'show advanced options', 1;
RECONFIGURE;
-- 启用xp_cmdshell
sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

安全提示:xp_cmdshell存在安全风险,生产环境建议使用完成后关闭,或仅对指定账户开放调用权限。

2. 创建调用Python脚本的存储过程

存储过程会自动执行远程Python脚本,并将print输出存入临时表后返回:

CREATE PROCEDURE dbo.RunRemotePythonProject
AS
BEGIN
    SET NOCOUNT ON;
    -- 替换为实际的远程Python解释器路径、目标脚本路径,路径含空格时必须用英文双引号包裹
    DECLARE @RemotePythonExe NVARCHAR(200) = '"\\192.168.3.20\PyShared\python.exe"'
    DECLARE @TargetScriptPath NVARCHAR(500) = '"\\192.168.3.20\PyShared\my_project\main.py"'
    DECLARE @ExecCommand NVARCHAR(1000) = CONCAT(@RemotePythonExe, ' ', @TargetScriptPath)

    -- 创建临时表存储Python脚本输出(含print内容、报错信息)
    CREATE TABLE #PythonOutput (
        LineContent NVARCHAR(4000)
    )

    -- 执行命令并写入输出到临时表
    INSERT INTO #PythonOutput
    EXEC xp_cmdshell @ExecCommand

    -- 返回所有非空的print输出,如需排查错误可去掉WHERE条件查看全部内容
    SELECT LineContent AS PythonPrintOutput 
    FROM #PythonOutput 
    WHERE LineContent IS NOT NULL;

    DROP TABLE #PythonOutput;
END

3. 执行存储过程获取输出

在SSMS的查询窗口直接执行如下命令即可得到Python脚本的所有print输出:

EXEC dbo.RunRemotePythonProject;

常见问题排查

  • 若返回空结果,首先检查SQL Server服务的运行账户是否有远程共享目录的访问权限
  • 若报错找不到路径,确认UNC路径书写正确,含空格的路径是否用双引号包裹
  • 若脚本运行异常,去掉存储过程中查询临时表的WHERE条件,可查看Python的报错信息辅助排查

内容的提问来源于stack exchange,提问作者Prashant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 11:24:03