我想在 SQL Server 2000 中从 TSQL 调用 Web 服务。我尝试使用以下代码:
Declare @Object as Int;
Declare @ResponseText as Varchar(8000);
Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
Exec sp_OAMethod @Object, 'open', NULL, 'get','http://server/ws/service1.asmx/Test', 'false';
Exec sp_OAMethod @Object, 'send';
Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT;
Select @ResponseText Resultado;
Exec sp_OADestroy @Object;
为此,我必须启用 Ole 自动化:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO
在我的测试服务器上工作正常,问题是在生产服务器上运行
sp_configure 'Ole Automation Procedures', 1;
我收到以下错误:
配置选项“Ole 自动化程序”不存在,或者它可能是一个高级选项。
跑步时
exec sp_configure
测试服务器上的记录“Ole 自动化程序”在生产服务器上没有。
更新
我修改代码以捕获错误:
Declare @Object as Int;
Declare @ResponseText as Varchar(8000);
Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
Exec sp_OAMethod @Object, 'open', NULL, 'get','http://server/ws/service1.asmx/Test', 'false';
Exec sp_OAMethod @Object, 'send';
Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT;
EXEC sp_OAGetErrorInfo @Object
Select @ResponseText Resultado;
Exec sp_OADestroy @Object;
指令“sp_OAGetErrorInfo EXEC @ Object”返回:(0x8004271A) srv_convert 中的错误。
根据 Microsoft(链接)是 SqlServer 的问题。因为在我的情况下,网络服务的结果超过了 4000 个字符。
如何从 TSQL 调用 Web 服务?