加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL Server可以发送Web请求吗?

发布时间:2020-12-12 16:30:26 所属栏目:MsSql教程 来源:网络整理
导读:我在本地网络上有一个SQL Server数据库和一个Intranet Web应用程序. Intranet Web应用程序创建记录并将其发送到数据库.我有一个Internet Web应用程序,我想发送新的记录,以使用本地网络上的SQL Server数据库. 我不能因为各种原因更改/修改Intranet Web应用程序
我在本地网络上有一个SQL Server数据库和一个Intranet Web应用程序. Intranet Web应用程序创建记录并将其发送到数据库.我有一个Internet Web应用程序,我想发送新的记录,以使用本地网络上的SQL Server数据库.

我不能因为各种原因更改/修改Intranet Web应用程序,所以我唯一的选择是在本地SQL Server上创建一个触发器,该触发器将使用某种http post请求或url调用向Internet Web应用程序发送新记录.

INTERNET Web应用程序设置有一个RESTful API,可以通过表单发送到可公开访问的URL(例如http://www.example.com/records/new)的新记录.

有没有人知道在SQL Server中是否可以实现通过url发送数据(url中的xml,json,plain变量)?

感谢任何想法!

解决方法

这是可能的,但在现实世界中,比你想象的天真的方法要复杂得多.主要地,触发器等待HTTP请求是不可接受的:

>对于一个,您的应用程序将爬行到尖叫停止,因为触发器将阻止资源(主要是锁)等待远程WWW服务的响应.
>第二,更微妙但更糟糕的是在回滚存在时的正确性问题.如果发送给HTTP请求的事务回滚,则无法“撤消”HTTP请求.

解决方案是通过队列将触发器与HTTP请求分离.触发器将请求排入本地队列并提交,而单独的处理将对这些请求进行排队并发出HTTP请求.这解决了上述两个问题.您可以使用普通表进行队列(参见Using Tables as Queues),也可以使用Service Broker,两者都可以正常工作.

现在关于如何出现这个请求并实际放置HTTP调用,我强烈建议使用一个专用的进程(即为此目的专用的应用程序).虽然可以使用SQLCLR,但这是一个非常糟糕的选择. SQL Server资源(特别是workers)在等待Internet响应时浪费了很多宝贵资源.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读