Azure SQL调用sp_invoke_external_rest_endpoint时JSON解析错误求助
Azure SQL调用sp_invoke_external_rest_endpoint报Msg 11558错误的解决方法
你遇到的Msg 11558错误,核心原因是请求头参数@headers的JSON格式不合法——你用了HTML转义符"来表示双引号,但SQL的sp_invoke_external_rest_endpoint要求传入标准JSON字符串,这种HTML转义会被当成普通字符,导致JSON解析失败。
直接修正方案
把@headers中的"替换为原生双引号,保持JSON的标准格式即可:
DECLARE @url nvarchar(4000) = 'https://ifconfig.me/all.json'--替换为你的Azure Function HTTP GET端点 ,@headers nvarchar(max) = N'{"x-functions-key":"keygoeshere"}' ,@payload nvarchar(max) = NULL ,@ret int ,@response nvarchar(max) ; exec @ret = sp_invoke_external_rest_endpoint @url = @url, @method = 'GET', @headers = @headers, @payload = @payload, @response = @response output; select @ret as ReturnCode, @response as Response;
额外排查点(若修正后仍报错)
- 确认目标端点返回严格合法的JSON:即使状态码为200,也要检查响应内容是否有多余空格、BOM头或非JSON格式字符(比如额外换行、注释)。
- 确保会话SQL设置正确:执行
SET ANSI_NULLS ON; SET QUOTED_IDENTIFIER ON;后重试,这两个设置是SQL处理JSON的默认要求,若被修改可能导致解析异常。
内容的提问来源于stack exchange,提问作者OzBob
相关产品推荐
相关产品推荐

