从SQL Server 2017调用Web服务-sp_OAMethod-无法建立与服务器的连接

时间:2018-12-17 18:03:07

标签: ole sql-server-2017

我正在尝试使用SQL Server的sp_OA方法连接到JSON Web服务。

这是我的脚本(从一个here修改而来):

DECLARE @TheURL VARCHAR(255) = 'http://ip.jsontest.com/' ,-- the url of the web service
        @TheResponse NVARCHAR(4000), --the resulting JSON
        @source nvarchar(255),  --error source
        @description nvarchar(255)  --error description
DECLARE @obj INT, @hr INT, @status INT, @message VARCHAR(255);

EXEC @hr = sp_OACreate 'MSXML2.ServerXMLHttp', @obj OUT;  --not really sure what ProgID or CLSID this is referencing

SELECT @hr

EXEC @hr = sp_OAMethod @obj, 'open', NULL, 'GET', @TheURL, false;

SELECT @hr

IF @hr = 0
    EXEC @hr = sp_OAMethod @obj, 'setRequestHeader', NULL, 'Content-Type',
          'application/x-www-form-urlencoded';
    SELECT @hr

    SET @message = 'sp_OAMethod Send failed';

    EXEC @hr = sp_OAMethod @obj, send, NULL, '';
    SELECT @hr

    EXEC sp_OAGetErrorInfo @obj, @source out, @description out
    SELECT @source, @description

    IF @hr = 0 
       EXEC @hr = sp_OAGetProperty @obj, 'status', @status OUT;

    IF @status <> 200 
    BEGIN
        SELECT @message = 'sp_OAMethod http status ' + Str(@status), @hr = -1;
    END;

    SET @message = 'sp_OAMethod read response failed';

    IF @hr = 0
    BEGIN
        EXEC @hr = sp_OAGetProperty @obj, 'responseText', @Theresponse OUT;
    END;

    EXEC sp_OADestroy @obj;

    IF @hr <> 0 
       RAISERROR(@message, 16, 1);

我最终得到一个错误,源是msxml3.dll,描述是

  

无法建立与服务器的连接

我正在Windows Server 2012上使用SQL Server2017。我已经看到Windows Server 2003和2008的一些解决方案要求应用此修补程序,但是,我认为他们已经在后续版本中修复了该问题。

关于如何解决此错误的任何想法?

0 个答案:

没有答案