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

存储过程如何返回SSMS生成的Commands Completed Successfully消息

核心结论

"Commands Completed Successfully" 是SSMS客户端收到存储过程执行成功的状态码后,在本地界面渲染的固定提示文本,不是SQL Server引擎返回给客户端的内容,没有任何原生方法可以从数据库侧捕获到这段文本。

可落地的替代方案
  • 存储过程侧自定义输出
    不需要执着于抓SSMS生成的提示,直接在你自己维护的存储过程里加输出参数,所有业务逻辑执行完成无异常时,主动给输出参数赋值你需要的成功文本即可,shell调用时直接读取输出参数值。
    示例存储过程写法:
    CREATE PROCEDURE dbo.YourTargetProc
        @resp_msg NVARCHAR(255) OUTPUT
    AS
    BEGIN
        SET NOCOUNT ON;
        -- 原有业务逻辑写在这里
    
        -- 无报错则赋值成功消息
        SET @resp_msg = N'Commands Completed Successfully';
        RETURN 0;
    END
    
  • Shell侧根据执行状态生成文本
    你通过Unix shell调用存储过程时,不管用sqlcmd、bcp还是FreeTDS组件连接数据库,只要命令执行的退出码为0,就代表存储过程执行成功,直接在shell逻辑里输出你需要的提示文本即可,完全不需要从数据库侧获取。
    示例shell判断逻辑:
    # 替换成你实际的数据库连接和存储过程调用命令
    sqlcmd -S 数据库地址 -U 用户名 -P 密码 -d 库名 -Q "EXEC dbo.YourTargetProc"
    if [ $? -eq 0 ]; then
        echo "Commands Completed Successfully"
    else
        echo "存储过程执行失败"
        exit 1
    fi
    
注意事项

不要浪费时间尝试用捕获信息事件、SQL Trace、Extended Events之类的方式捞这段文本,这段文本从始至终没有出现在数据库服务端和客户端的通信内容里,是SSMS自己在本地生成的UI提示,任何数据库侧的捕获方法都不可能拿到它。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:42:14