【发布时间】:2019-01-06 11:18:30
【问题描述】:
我在我的项目中使用带有 sql clr 用户定义函数的 sql clr 程序集。例如:
[SqlFunction]
public static SqlString InsertCampaignRecipients(SqlString url)
{
var rowData = string.Empty;
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
var response = client.GetAsync(new Uri(url.Value)).Result;
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsStringAsync().Result;
if (result.IndexOf(@"""Exception"":null}") > 0) //success
{
rowData = "success";
}
else
{
rowData = string.Empty;
}
}
else
{
rowData = string.Empty;
}
}
return rowData;
}
但我想在 clr 不支持的 Azure 上迁移。 解决办法是什么?是否可以将 sql clr 函数重写为 sql 存储过程之类的?
【问题讨论】:
-
打开http客户端的方法?不,我认为能够在存储过程中做这将是一件可怕的事情......但是,在 SQL CLR 函数中做这件事也是一件可怕的事情 :) 这听起来像你的应用程序服务器应该做...
-
为什么你的代码标有[SqlFunction]。该代码与访问数据库无关。该代码正在向正在访问数据库的服务器发出 Http 请求。
-
@jdweng OP 将代码作为 SQLCLR 程序集(SQL Server 中的 .NET 代码)运行,并使用
SqlFunction赋予该方法,因此该方法被创建为 SQL UDF。 -
SQL Server 有 HTTP 请求方法吗?不!!!那么为什么要给方法贴上标签呢?
-
在迁移到 Windows Azure SQL 数据库时,对于具有用户定义 CLR 类型的数据库,是否有任何替代方案?
标签: sql-server stored-procedures azure-sql-database user-defined-functions sqlclr