SQL SERVER HTTP请求

本文介绍如何在 SqlServer 中配置 HTTP 请求功能,包括启用 OleAutomationProcedures 参数、创建 HttpRequest 存储过程来发起 GET 请求并获取响应。此方法适用于需要从 SqlServer 环境中调用外部 Web 服务的场景。
--开启Sql Server 通讯配置--
sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
EXEC sp_configure 'Ole Automation Procedures';
GO
/*
参数说明?
@URL=http请求地址
@Status=状态代码
@ReturnText=返回码
@Object=对象令牌
@ErrSrc=错误源编码
*/
CREATE PROCEDURE [dbo].[HttpRequest](
    @URL NVARCHAR(4000),
    @Status INT=0 OUTPUT,
    @ReturnText NVARCHAR(4000)='' OUT
)
AS
BEGIN
    DECLARE
        @Object int,
        @ErrSrc int
        
    /*初始化对象*/
    EXEC @Status = SP_OACreate 'Msxml2.ServerXMLHTTP.3.0', @Object OUT
    IF @Status <> 0
    BEGIN
     EXEC SP_OAGetErrorInfo @Object, @ErrSrc OUT, @ReturnText OUT
     RETURN
    END

    /*创建链接*/
    EXEC @Status= SP_OAMethod @Object,'open',NULL,'GET',@URL
    IF @Status <> 0
    BEGIN
     EXEC SP_OAGetErrorInfo @Object, @ErrSrc OUT, @ReturnText OUT
     RETURN
    END
    EXEC @Status=SP_OAMethod @Object,'setRequestHeader','Content-Type','application/x-www-form-urlencoded'
    
    /*发起请求*/
    EXEC @Status= SP_OAMethod @Object,'send',NULL 
    IF @Status <> 0 
    BEGIN 
     EXEC SP_OAGetErrorInfo @Object, @ErrSrc OUT, @ReturnText OUT
     RETURN
    END
     
    /*获取返回*/
    EXEC @Status= SP_OAGetProperty @Object,'responseText',@ReturnText OUT
    IF @Status <> 0 
    BEGIN 
     EXEC SP_OAGetErrorInfo @Object, @ErrSrc OUT, @ReturnText OUT
     RETURN
    END
END;
GO

 

转载于:https://www.cnblogs.com/varorbc/p/4633000.html

站内引用未提及SQL Server是否可以接收HTTP请求的相关内容。不过,SQL Server本身没有内置直接接收HTTP请求的功能。但可以通过一些间接的方式实现与HTTP请求的交互。 一种常见的做法是结合其他技术,例如使用中间层应用程序(如ASP.NET、Java Web应用等)来接收HTTP请求,然后在应用程序中执行SQL Server的查询、存储过程等操作,从而间接实现与SQL Server的交互。 另外,也可以通过配置SQL Server的Service Broker或者CLR集成等高级特性,结合外部的Web服务框架(如使用.NET的Web API)来构建一个能够接收HTTP请求并与SQL Server交互的系统,但这些实现方式相对复杂,需要有一定的开发和配置经验。 ### 代码示例 以下是一个简单的ASP.NET Core示例代码,用于接收HTTP请求并与SQL Server交互: ```csharp using Microsoft.AspNetCore.Mvc; using System.Data.SqlClient; namespace SqlServerHttpExample.Controllers { [ApiController] [Route("[controller]")] public class SqlController : ControllerBase { [HttpGet] public IActionResult Get() { string connectionString = "Data Source=YOUR_SERVER;Initial Catalog=YOUR_DATABASE;User ID=YOUR_USER;Password=YOUR_PASSWORD"; using (SqlConnection connection = new SqlConnection(connectionString)) { try { connection.Open(); // 执行SQL查询 string query = "SELECT * FROM YourTable"; SqlCommand command = new SqlCommand(query, connection); SqlDataReader reader = command.ExecuteReader(); // 处理查询结果 while (reader.Read()) { // 读取数据 } reader.Close(); return Ok("Query executed successfully"); } catch (Exception ex) { return BadRequest($"Error: {ex.Message}"); } } } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值