SQL Server 2012 从存储过程发出 HTTP 'GET' 请求

SQL Server 2012 make HTTP 'GET' Request from a stored procedure

我得到了一个 returns 一个 JSON 对象的 Web 服务。我的任务是向该 Web 服务发出 HTTP 'GET' 请求,并将检索到的 JSON 数据每 5 分钟存储到 table。

我正在考虑创建一个存储过程,然后创建一个每 5 分钟执行一次该存储过程的作业。

我的问题是,您可以从存储过程发出 HTTP 请求吗? 有没有更好的方法来实现这个目标?

我最终使用 CLR 函数(使用 C#)从现有 Web 服务中提取 JSON 对象,将其 JSON 转换为 XML(因为 MSSQML2012 不支持 JSON) 和 return xml 数据。

我构建了 CLR 函数(扩展名为 .dll)并在 MSSQML2012 上创建了一个程序集。一旦程序集在那里,我就创建了一个 MSSQML2012 函数来执行程序集文件。

从那里我创建了一个调用 MSSQML2012 函数的存储过程,一旦 xml 数据在存储过程中可用,我就通过节点进行解析并将它们插入到各自的表中。

我的下一步是创建一个可以根据需要经常执行存储过程的作业。

希望对您有所帮助!! :)

是的,这可以通过存储过程或函数(标量 UDF 或 TVF)中的 SQLCLR(即 "CLR Integration")完成。但是,与其像编写常规 Windows 或 Web 应用程序一样继续进行,还应了解在 SQL 服务器 CLR 主机中工作的各种细微差别。我在下面 S.O 中记录了其中的大部分内容。答案:

  • (其他答案也在此链接中)
  • Security error when calling external web service in visual studio

此外,请参阅我写的关于使用 SQLCLR 的各种细微差别的文章:Stairway to SQLCLR Level 5: Development (Using .NET within SQL Server)(该站点需要免费注册,但本系列中的其他文章应该有帮助:-).