从存储过程调用Web Api 2端点

时间:2016-03-22 16:32:01

标签: sql-server json sql-server-2008 tsql asp.net-web-api2

某些旧的SQL存储过程(SQL Server 2008)需要从我提供的Web服务(Web Api 2)中获取一些信息。

如何调用端点(在GET中),检索数据(JSON格式)和翻译在临时表中收到的数据,以便在其余的sproc中使用?

由于

3 个答案:

答案 0 :(得分:7)

最好的方法是创建Used-defined CLR function并从那里调用您的Web API,这样您就可以使用C#和.Net库的全部功能来进行Web调用并解析Json。互联网上有大量关于此的信息。例如:https://blogs.msdn.microsoft.com/spike/2010/11/25/how-to-consume-a-web-service-from-within-sql-server-using-sql-clr/。这与WebAPI无关,但您可以从那里获得想法。

请注意,它需要将带有CLR功能的自定义程序集部署到SQL Server。

修改

有一种方法可以使用OLE Automation在TSQL中执行此操作。查看示例here,但它更难,文档更少,您可能会花时间发明自己的自行车而不是使用CLR函数的现成解决方案。

答案 1 :(得分:6)

无需编写CLR即可轻松完成:

$errorMethodName

答案 2 :(得分:0)

尝试使用以下CLR存储过程:SQL-APIConsumer

 exec  [dbo].[APICaller_POST]
       @URL = 'http://localhost:5000/api/auth/login'
      ,@BodyJson = '{"Username":"gdiaz","Password":"password"}'