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 Automation を有効にする必要がありました。
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 Automation Procedures」が存在しないか、詳細オプションである可能性があります。
実行時
exec sp_configure
テスト サーバーではレコード "Ole Automation Procedures" が実稼働サーバーには表示されません。
アップデート
エラーをキャッチするようにコードを変更します。
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 の問題です。私の場合、Webサービスの結果が4000文字を超えているためです。
TSQL から Web サービスを呼び出すにはどうすればよいですか?