从SQL Server 2012发送HTTP请求是否有公认的标准方法?
我试图做的是使用远程服务器处理搜索查询,然后将结果插入SQL server 2012数据库。远程服务器提供了一个web api,它接受POST请求和JSON内容。
我有一个可行的解决方案,但需要将多个程序集加载到SQL Server中。其中一些程序集不完全受支持(例如System.Net.Http.dll),会发出如下警告:
警告:Microsoft.NET Framework程序集“system.NET.http,version=4.0.0.0,culture=neutral,publickeytoken=b03f5f7f11d50a3a,processorarchitecture=msil”您正在注册的未在SQL Server宿主环境中进行完全测试,因此不受支持。将来,如果升级或维护此程序集或.NET Framework,CLR集成例程可能会停止工作。有关详细信息,请参阅SQL Server联机丛书。
我想知道是否有一种更好/更安全的方法不需要加载所有这些组件?
存储过程的CLR代码:
[Microsoft.SqlServer.Server.SqlProcedure]
public static void SendSearchRequestProcedure (string query, string table)
{
RunAsync(query,table).Wait();
}
static async Task RunAsync(string query, string table)
{
using (var client = new HttpClient())
{
HttpResponseMessage response;
client.BaseAddress = new Uri("http://localhost:9000/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var search = new Search() { Query = query, Table = table };
response = await client.PostAsJsonAsync("api/search/", search);
if (!response.IsSuccessStatusCode)
{
// handle error
}
}
}