【问题标题】:SQL Server 2012 make HTTP 'GET' Request from a stored procedureSQL Server 2012 从存储过程发出 HTTP 'GET' 请求
【发布时间】:2016-04-21 08:07:44
【问题描述】:

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

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

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

【问题讨论】:

  • 我不确定在哪个框架中编写代码或服务。我是一名网络开发人员。您提到了 vb.net,c# ,但是您可以使用它构建多种类型的应用程序,您能指导我更多吗? @ArunprasanthKV
  • 是 SQL Server 数据库项目 (CLR) 吗?
  • 我正在使用 C#。好的,但是如果我创建了一个调用另一个 Web 服务的 Web 服务,我该如何设置它以便每 5 分钟调用一次 Web 服务而没有任何人调用它? @ArunprasanthKV
  • 那么你必须编写一个窗口服务,然后你可以在特定的时间间隔运行它,就像我们在大多数 Web 应用程序中使用的电子邮件服务一样
  • 您可以从 SSIS 包、自定义 CLR 函数、执行 powershell 命令或根据以下 URL 调用 Web 服务 Microsoft.XMLHTTP :sqlblog.com/blogs/adam_machanic/archive/2006/07/12/… 我的建议是 CLR 函数,因为您可以使用 .NET 的特性来帮助您解析 JSON 对象、处理异常并完成所有美妙的 .NET 工作。

标签: sql-server json stored-procedures sql-server-2012 sqlclr


【解决方案1】:

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

我构建了 CLR 函数(带有 .dll 扩展名)并在 MSSQML2012 上创建了一个程序集。组装完成后,我创建了一个 MSSQML2012 函数来执行组装文件。

从那里我创建了一个名为 MSSQML2012 函数的存储过程,一旦 xml 数据在存储过程中可用,我只需解析节点并将它们插入各自的表中。

我的下一步是创建一个作业,该作业可以按我想要的频率执行存储过程。

希望对你有帮助!! :)

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多