一尘不染

如何从SQL Server发出HTTP请求?

tomcat

我想从SQL服务器向Tomcat服务器发送HTTP请求。我已在Tomcat服务器中安装了SQL Server 2012
Express和非.NET应用程序。我已经经历过像从SQL服务器发出HTTP请求这样的过程

正如上面文章中所说,“必须在服务器上安装COM对象WinHttp.WinHttpRequest.5.1,其中一些典型的变化是WinHttp.WinHttpRequest.5”。我已经从winhttp下载链接下载了
winhttp.zip,在zip文件夹中找到了winhttp.dll,并C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER2\MSSQL\Binn按照此msdn链接中的建议将其粘贴了。

遵循相同的建议,我在SSMS中执行了以下代码:

sp_addextendedproc 'GetHttp',
 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER2\MSSQL\Binn\winhttp.dll';

我还在SSMS中执行了以下代码,如“从SQL Server链接发出HTTP请求”中所述:

Alter function GetHttp
(
@url varchar(8000)      
)
returns varchar(8000)
as
BEGIN
DECLARE @win int 
DECLARE @hr  int 
DECLARE @text varchar(8000)

EXEC @hr=sp_OACreate 'WinHttp.WinHttpRequest.5.1',@win OUT 
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win

EXEC @hr=sp_OAMethod @win, 'Open',NULL,'GET',@url,'false'
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win

EXEC @hr=sp_OAMethod @win,'Send'
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win

EXEC @hr=sp_OAGetProperty @win,'ResponseText',@text OUTPUT
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win

EXEC @hr=sp_OADestroy @win 
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win

RETURN @text
END

然后我得到了错误

消息2010,级别16,状态1,过程GetHttp,第2行
无法在’GetHttp’上执行更改,因为它是不兼容的对象类型。

我不知道如何调用该函数来发送HTTP请求。我认为是这样的GetHttp('http://www.google.co.in/')

我想念什么?


阅读 1055

收藏
2020-06-16

共1个答案

一尘不染

我通过powershell得到了答案。我所做的是在sql server中打开powershell,然后在powershell中执行了以下代码。

$http_Request= New-Object system.Net.WebClient;
$Result = $http_Request.downloadString("url")
2020-06-16